What is the difference between SMTP server mail() and PHP mail()

Posted on April 9, 2014 by Suresh Kamrushi in PHP

PHP support mail() function for sending mails. And in general we use it as it fast and easy to do it. When we use mail(), a native function of PHP it goes to Spam box and not in inbox of the intended recipient.

So never use mail() function of php it will send your mail to junk only. Instead use SMTP php mailer function. Here I discuss few points why we should avoid mail function and SMTP class is better:
Why we should use SMTP instead PHP mail():

SMTP log in to an actual account on a mailserver and send the mail through SMTP to another mail server. If the mail server is configured correctly, your mails are sent from an actual account on a mailserver and will not wind up flagged as spam.

Mail sent with the mail() function is sent with sendmail in most cases. There is no authentication going on and it will almost always be flagged as spam if you use the “From:” in the extra headers.

This is because if you take a look at an original email file in say, gmail, you will see the headers that are sent. You are actually sending from user@serverhostname.tld and not someone@example.com like you had told the mail function to do. If you use SMTP and view the original the email is actually sent from someone@example.com

You can download SMTP class from:

  1. https://code.google.com/a/apache-extras.org/p/phpmailer/source/browse/trunk/class.smtp.php?r=170
  2. http://www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html
  Comments or questions are welcome  
Tagged as ,