I need to send a mailing but I've had problems before because a large share of the intented recipients never read it because the mailing was detected as spam. How can I solve this?
An alternative solution is to use a third party service to send the emails and not the web server. They'll be better placed to ensure your not marked as spam. Services such as CiviSMTP (Paid), Mandrill (Free to small lists or with Mailchimp plans otherwise Paid) and Sendgrid (Paid) can all be used. I would recommend this as a longer term solution rather then trying to manage your own reputation.
Parvez's answer recommending external mail delivery services is a good idea for most CiviCRM installations. There are lots of providers so prices are relatively cheap, and those providers are highly motivated to ensure delivery of your CiviCRM emails.
For sites which deliver directly (ie you run an MTA of your and deliver direct from your server to the receiving hosts), this is the list of things you might want to have in mind:
- Don't be spammy!
- Configure SPF, DKIM and DMARC correctly.
- Ensure your outgoing emails have a valid return address
- Review the logs of your MTA for delays, rejections and other indicators
- Monitor blacklist entries for your domain and ip
- Make unsubscribe easy (so people don't junk you)
- Check headers of the delivered emails for clues when mail does get junked - some providers will add clues there ("Possibly junk because the return address is not deliverable", etc)
- Consider who your "hosting neighbours" are - are spammy-looking emails being sent by other organisations from the same mailserver that your site is using?
- If you can, accept that results may vary - some mail providers are less tolerant of mass mail, and some are just plain bad ... move on if possible!
- Explore letting go of open tracking & link tracking - these are probably indicators of junk mail.
I'm sure there's more - feel free to edit this answer and add to it, or drop suggestions in the comments.
One important step is to make sure the domain you're sending from (actually the Return-Path address, which with CiviMail is probably the bounce address) has SPF set up. It needs to whitelist the SMTP server that you use for Civi's outbound mail (which may be the Civi server itself if using mail() or Sendmail), as well as any other SMTP servers that send mails from your domain (which may belong to eg. your organisation, your ISP or Google).
Also check if your SMTP server appears on any blacklists.