Sending emails automatically at the click of a button

Daniel H picture Daniel H · Apr 13, 2011 · Viewed 91.7k times · Source

I am designing an Emergency Response page, and one of the features we need is to be able to click a button (e.g. 'Send details to embassy'), and then send an automatically-generated email to the intended recipient ($email_address) without having to go into Microsoft Outlook and click send. Is there a way to do this?

The only method I know is the <a href='mailto:[email protected]'> one, but this opens the email in Outlook and really I need it to be completely automated.

Answer

gmadd picture gmadd · Apr 13, 2011

Something like this would work as a starting point:

<form action="" method="post">
    <input type="submit" value="Send details to embassy" />
    <input type="hidden" name="button_pressed" value="1" />
</form>

<?php

if(isset($_POST['button_pressed']))
{
    $to      = '[email protected]';
    $subject = 'the subject';
    $message = 'hello';
    $headers = 'From: [email protected]' . "\r\n" .
        'Reply-To: [email protected]' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

    mail($to, $subject, $message, $headers);

    echo 'Email Sent.';
}

?>

UPDATE

This can be used as a Javascript function to call the mail.php page and send the email without reloading the page.

function sendemail()
{
    var url = '/mail.php';

    new Ajax.Request(url,{
            onComplete:function(transport)
            {
                var feedback = transport.responseText.evalJSON();
                if(feedback.result==0)
                    alert('There was a problem sending the email, please try again.');
            }
        });

}

You'll need Prototype for this method: http://www.prototypejs.org/api/ajax/request

I haven't tested this, but hopefully it should be along the right lines.