It's best practice to offload your mail request through a third party service or another dedicated server. Using the php
mail() function is unreliable and can be disabled for certain WordPress host.
When maintaining a WordPress Multi-site SAAS product email is extremely important. Your clients are likely using your product to capture leads, update their clients or communicate with other users, all through email.
Smells Like Spam
One of your clients might be a little spammy! If their emails get flagged all your client emails could also be flagged. Meaning the IP address can be blocked from sending emails to certain large groups of users. One site I worked on, a client abused their email and got all our clients banned from using MailChimp as a service.
Brand Recognition via Domains
When a new potential lead receives an email from one your sites. The new lead might not know your service. Your service could be whitelabeled and resold. Meaning having your website address in the email could cause problems. One solution I've used in the past is to use a generic url for just sending emails. Imagine your service provides websites for farmers markets. All your emails could come from
farmermarketupdates.com. Another solution would be to have each of your clients using your service update their TXT records to allow for emails to send through your third part email service. Updating 100+ DNS records is no fun and can be complicated for non-tech clients.
Connection Ports and Hosted WordPress
A few hosted WordPress services, like WPEngine (which runs on Google Cloud) do not allow certain ports to be used. A lot of SMTP connections use port 587, which is blocked by all third party services using Google Cloud. Before you pick an email service, like Mandrill for MailChimp, make sure your host provider meets the port connection requirements!
A great solution I've used in the past is SendGrid, Microsoft owned (I think) transactional email service.
- Well supported muti-site network enabled WordPress plugin!
- Simple to get started with their API.
- The plugin allows for global settings or a site by site setting.
The site by site setting is amazing for that one client who is spammy. You could limit their usage to 100 emails a day. If they complain you request they create their own SendGrid account. Using their own API keys, you would avoid having your company and all your clients flagged as spam.
The ability to set site by site settings is also a great way for the one client who wants to set up TXT DNS records to send emails from their branded custom domain.
Thanks for reading! Code On.