PHP mail() and SMTP Authentication

Part of what makes the PHP mail() function is so simple is its lack of flexibility. It's frustrating that 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 mail servers today — at all.

PEAR Mail for SMTP Authentication and SSL Connection

Fortunately, overcoming PHP's built-in shortcomings is not difficult.

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:

  • Make sure the PEAR Mail package is installed.
    • Typically, in particular with PHP 4 or later, this will have already been done for you. Just give it a try.
  • Adapt the example below for your needs. Make sure you change the following variables at least:
    • from: the email address from which you want the message to be sent.
    • to: the recipient's email address and name.
    • host: your outgoing SMTP server name.
    • username: the SMTP user name (typically the same as the username used to retrieve mail).
    • password: the password for SMTP authentication.
 

Sending Mail from PHP Using SMTP Authentication - Example

<?php
 require_once "Mail.php";
 
 $from = "Sandra Sender <[email protected]>";
 $to = "Ramona Recipient <[email protected]>";
 $subject = "Hi!";
 $body = "Hi,\n\nHow 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 <[email protected]>";
 $to = "Ramona Recipient <[email protected]>";
 $subject = "Hi!";
 $body = "Hi,\n\nHow 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>");
  }
 ?>
  • 104 Users Found This Useful
Was this answer helpful?

Related Articles

Microsoft Outlook Zoho Configuration 2013 POP3 & IMAP Tutorial

Set Up E-mail with Microsoft Outlook 2013 using POP3 or IMAP In this tutorial, we shall use the...

POP3 SetUp on iPad, iPhone

  On the iPhone, tap Settings. Tap Mail, Contacts, Calendars. Tap Add Account. Tap Other....

BlackBerry Mail Settings

How to setup email accounts on a BlackBerry Smartphone1. Scroll to see and select All.2. Scroll...

How to Setup Microsoft Outlook POP3

Set Up E-mail with Microsoft Outlook 2013 using POP3 In this tutorial, we shall use the domain...

Change or reset your Gmail account Password

Change or reset your password You can change your password for security reasons or reset it if...