How to avoid your emails from ending up as spam.
So you've create this great online app, you've opened it up for people to register, but then you realize one thing -- your emails are ending up in your user's spam boxes. How one service judges an email may differ greatly from another service. Email filters generally calculate some type of "spam score" generated from their own algorithms based on a variety of factors, so the best thing you can do is to eliminate as many common variables as you can.
Here are a few things you could do to make it more likely to make it through those pesky spam filters:
1. Implement Sender Policy Framework (SPF)
Sender Policy Framework is a validation system designed to prevent people from spoofing emails from other domains. By placing a SPF record to your DNS, you specify which server hosts are allowed to send email on your behalf. This is one of the simpler implementations you can and should do.
2. Implement DomainKeys Identified Mail (DKIM)
DomainKeys Identified Mail is another validation system that uses a combination of both DNS entries and a digital "signature" to each email that provides an extra depth of authentication. This does require implementation changes to be made on the mail sender and can get quite cumbersum depending on some configurations. Some prominent email service providers that implement DKIM are Gmail, Yahoo and AOL.
3. Avoid spammy IP addresses in same ranges from which you are sending your emails.
AWS servers in the past for example, have been notorious for being spambots. Check your IP addresses and make sure that IP addresses in similar ranges haven't been blacklisted. There are several lists out there that you can reference and do a check.
4. Consider using a reliable send-mail service. Amazon SES, Sendgrid are a couple that come to mind.
Several send-mail services exist to take on the responsibility of sending out your emails. Since their business revolves around sending out your emails successfully, making sure your email isn't marked as spam will be one of their top priorities. In addition, they are able to provide feedback in certain instances if your email was successfully delivered or rejected by the receiving mail server.
5. Provide email in both HTML and plain-text MIME encoding.
You can provide both a HTML and a plain-text version of your content in your email. This provides both a fall-back method to plain-text in the event the recipient can't view HTML, but also provides another signal to spam filters that your email just might not be that spam their looking for.
6. Provide unsubscribe instructions and/or link.
Following the CAN-SPAM act of 2003, it is required by law to provide a method to unsubscribe. Providing this link adds to your email's credibility.
7. Provide a physical address at the bottom of your email.
Again, with the CAN-SPAM act, providing a physical address is required on your emails.
8. Lastly, think about all the spam you've seen in your inbox, and just don't do it.
Certain words, descriptions and subjects will make your spam score go higher. Avoid multiple images and multiple links. Don't spoof links by mismatched text and href links. Just be aware of all of this. MailChimp provides some good advice on how to do this here.
Hope that helps, if any other methods have helped you avoid those spam filters, please let me know.