PHP mail() and SMTP Authentication

Sending an email from a PHP script is simple, fast and easy...if it works! 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.

 

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 <sender@example.com>";
 $to = "Ramona Recipient <recipient@example.com>";
 $subject = "Hi!";
 $body = "Hi,\n\nHow are you?";
 
 $host = "mail.yourdomain.com";
 $username = "domain hosted email";
 $password = "email 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,\n\nHow are you?";
 
 $host = "ssl://mail.youdomain.com";
 $port = "465";
 $username = "Domain Hosted email";
 $password = "email 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>");
  }
 ?>
  • php, phpmailer, smtp
  • 0 Users Found This Useful
Was this answer helpful?

Related Articles

How to configure your domain email on Gmail app ?

Log in to cPanel using your username and your cPanel password at http://yourdomain.com/cpanel,...

How to Connect to the MYSQL Database Remotely?

Allowing remote MYSQL connections is often done to enable a program on your personal computer to...

How to disable mod security using htaccess file?

Mod_security is an apache module that helps to protect your website from various attacks.It is...

Prevent Brute Force Attacks in WordPress

A brute force attack is a trial-and-error method in which the hackers aim to gain access to a...

How to fix failed to retrieve directory listing error in FileZilla FTP?

When using FileZilla to connect to your FTP if you encounter an error like this: Status:...