Just about everyone who uses PHP has
encountered the popular PHP mail() function which enables email to be
sent from a server. This function is preferred to other methods of sending
email, such as sending mail with SMTP Authentication, because its
implementation is quick and easy. Unfortunately, when using the mail()
function, your emails are more likely to be marked as spam. So how can we fix
this?
A
Simple Implementation Example
Many users of the mail()
function often have simple implementations as shown in the code sample below:
mail("recipient@recipient.com", "Message", "A simple message.", "From: The Sender
?>
While this implementation will
successfully send an email, the email will probably get caught in the recipient’s
spam filter. Fortunately, there are some simple fixes that can help you avoid
spam filters.
4
Ways To Make Your PHP mail() Emails Less Spammy
1.
Use Headers
In the simple example above, the
from name and email address was added as the fourth parameter. Instead, consider
using headers to set your From and Reply-To email addresses.
$headers .= "Reply-To: The Sender
$headers .= "Return-Path: The Sender
$headers .= "From: The Sender
?>
But headers are good for more
than just setting details about the sender. They are also important for setting
the content type, the email priority, and more. Here are how some additional
headers look.
$headers .= "Organization: Sender Organization\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-Mailer: PHP". phpversion() ."\r\n"
?>
Be sure to replace the fourth parameter
with the $headers variable as shown below.
mail("recipient@recipient.com", "Message", "A simple message.", $headers);
?>
2.
The Message Sender Domain and Server Domain Should Match
Spammers are notorious for sending
emails from one server and trying to make the recipient believe that it came
from somewhere else. So if you are sending an email from example@example.com,
it is a good idea the the script reside on example.com.
3.
Be Sure to Properly Use the Content-type Attribute
The Content-type attribute
enables a message sender to say whether or not an email is plain text or
html, or whether it has attachments. Obviously, the easiest to use content type
is text/plain. You just add your text as shown in the simple example,
and you are done. But when you use the other content types, additional pieces
might be expected. For example, with the text/html content type, an html
body tag is expected. Not having this tag could result in your email being
marked as spam.
4.
Verify That Your Server Is Not Blacklisted
When a server is blacklisted, it
means that that server has identified as one that has been sending a lot of
spam. This results in recipient mail servers rejecting or filtering any mail
that is received from that server.
So if your mail is not being received
it is a good idea to verify that your server has not been blacklisted. This
goes for both shared and dedicated servers. In a shared environment, it is
common for other users on the server to be sending out spam. And in a dedicated
environment, spammers may have found a way to exploit a vulnerability in a
server or contact form to send out spam. So it is easy for either type of
server to be blacklisted.
Alright, now that you have the
basics on avoiding spam filters, reconstruct your scripts and happy emailing!
No comments:
Post a Comment