According to statistics, 80% of all sent emails are spam. As a result, spam filters become more aggressive and legitimate emails can end up in spam box.
Spam filter is looking for 3 things to decide if the email is spam or not:
1. Who is the email sender ID
Using email headers spam filters check if the email was sent by a spam engine or by a real sender, if you are using webmail or mail client like Outlook then most likely you do not have a problem here, but if you are using PHP script, form mailer or mail was a result of Wordpress plugin, then you may face an issue here, if you want to use PHP and avoid issues, be sure to let PHP use authenticated SMTP server to send the email and be sure that the sender is matching the real sender mailbox.
2. Which server sent this email
Mail providers have created special network lists called RBLs . Spam filter checks such lists for the IP, that the message was sent from. If the IP address matches one on the list the spam filter then it will mark the email as spam. 2MHost do not have a problem here, we use special service to deliver our clients emails, this service never get listed in any RBLs, They simply filter all outgoing emails, block spam in source to avoid any blacklisting.
3. The content of the email and how it looks like.
Spam filter analyzes the content and the subject of the email. Some words and sentences can be suspicious like 'make money fast', 'buy now', 'lowest prices', 'click here', etc. Also, flashy HTML such as large fonts, blinking text, bright colors and so on can be suspicious words. Spam filters compare the whole email body to the amount of suspicious words. So, if your email is long, it will not be identified as spam because of a few suspicious words.
Test email with personal @gmail or @hotmail address or with spam checkers like https://www.mail-tester.com/ and when do, try to use real content as possible, empty emails or emails with 'testing' subject may be marked as spam by default.