Site icon Tech News and Cyber Security Updates

How to Send Email from a PHP Script Using SMTP Authentication (and SSL)

How to Send Email from a PHP Script Using SMTP Authentication (and SSL)

Sending an email from a PHP script is simple, fast and easy; if it works.

 

PHP mail() and SMTP Authentication

Part of what makes the PHP mail() function is so simple is its lack of flexibility. Most importantly and frustratingly, stock PHP mail() does not usually allow you to use the SMTP server of your choice, and it does not support SMTP authentication — required by many a mail server today — at all.

PEAR Mail for SMTP Authentication and SSL Connection

Fortunately, overcoming PHP’s built-in shortcomings is not difficult either, complicated or painful. For most email uses, the free PEAR Mail package offers all the power and flexibility needed, and it authenticates with your desired outgoing mail server. For enhanced security, encrypted SSL connections are supported for sending mail using PEAR Mail as well.

Send Email from a PHP Script Using SMTP Authentication

To connect to an outgoing SMTP server from a PHP script using SMTP authentication and send an email:

Sending Mail from PHP Using SMTP Authentication – Example

<?php require_once "Mail.php";  $from = "Sandra Sender <sender@example.com>"; $to = "Ramona Recipient <recipient@example.com>"; $subject = "Hi!"; $body = "Hi,nnHow are you?";  $host = "mail.example.com"; $username = "smtp_username"; $password = "smtp_password";  $headers = array ('From' => $from,   'To' => $to,   'Subject' => $subject); $smtp = Mail::factory('smtp',   array ('host' => $host,     'auth' => true,     'username' => $username,     'password' => $password));  $mail = $smtp->send($to, $headers, $body);  if (PEAR::isError($mail)) {   echo("<p>" . $mail->getMessage() . "</p>");  } else {   echo("<p>Message successfully sent!</p>");  } ?>

Sending Mail from PHP Using SMTP Authentication and SSL Encryption – Example

 

<?php require_once "Mail.php";  $from = "Sandra Sender <sender@example.com>"; $to = "Ramona Recipient <recipient@example.com>"; $subject = "Hi!"; $body = "Hi,nnHow are you?";  $host = "ssl://mail.example.com"; $port = "465"; $username = "smtp_username"; $password = "smtp_password";  $headers = array ('From' => $from,   'To' => $to,   'Subject' => $subject); $smtp = Mail::factory('smtp',   array ('host' => $host,     'port' => $port,     'auth' => true,     'username' => $username,     'password' => $password));  $mail = $smtp->send($to, $headers, $body);  if (PEAR::isError($mail)) {   echo("<p>" . $mail->getMessage() . "</p>");  } else {   echo("<p>Message successfully sent!</p>");  } ?>

***********************************************************************

The native PHP’s mail() fucntion doesn’t allow you to chose the SMTP server of your choice, nor does it support SMTP authentication.

Fortunately, you can use the free PHPMailer email sending library to overcome PHP’s built-in shortcomings.

Here is a sample usage:

require_once('/library/PHPMailer/class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = 'login';
$mail->SMTPSecure = 'ssl';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = 'example@gmail.com';
$mail->Password = 'somepassword';
$mail->SetFrom('example@gmail.com', 'Example');
$mail->Subject = 'The subject';
$mail->Body = 'The content';
$mail->AddAddress('receiver@gmail.com');
$mail->Send();

 

Exit mobile version