platform-features
Emails

By default your environment is configured to send emails from the placeholder domain “no-reply@-.sites.silverstripe.com”; this is configured from the variables section of your environment with the SS_SEND_ALL_EMAILS_FROM environment variable.

If you try to send emails with a “from” address other than the initially provided email address, the emails might be blocked from being sent or have other issues. The rest of this page describes the steps to prevent this from happening.

Verifying ownership of domain

If you are using the default SilverStripe framework Mailer to send out emails, the emails are sent via AWS Simple Email Service (SES). AWS SES requires that you verify your domain, to confirm that you own it and to prevent others from using it.

For example, if you verify the domain “example.com”, you can send email from user1@example.com, user2@example.com, or any other user at example.com.

If you verify a domain with Amazon SES, you can send from any subdomain of that domain without explicitly verifying the subdomain. For example, if you verify example.com, you do not need to verify a.example.com or a.b.example.com. As specified in RFC 1034, each DNS label can have up to 63 characters, and the whole domain name must not exceed a total length of 255 characters.

Your domain is associated with a set of Domain Name System (DNS) records that you manage through your DNS provider. A TXT record is a type of DNS record that provides additional information about your domain. Each TXT record consists of a name and value.

When you initiate domain verification with us, we will give you the name and value to use for the TXT record. For example, if your domain is example.com, the TXT record settings will look similar to the following example:

Name                   Type Value
_amazonses.example.com TXT  pmBGN/7MjnfhTKUZ06Enqq1PeGUaOkw8lGhcfwefcHU=

Add a TXT record to your domain’s DNS server using the specified Name and Value and then contact us so that we can check the status of the domain verification.

If your DNS provider does not allow DNS record names to contain underscores, you can omit _amazonses from the Name. In that case, for the preceding example, the TXT record name would be example.com instead of _amazonses.example.com. To make the record easier to recognize and maintain, you can also optionally prefix the Value with amazonses:. In the previous example, the value of the TXT record would therefore be amazonses:pmBGN/7MjnfhTKUZ06Enqq1PeGUaOkw8lGhcfwefcHU=.

DKIM

DomainKeys Identified Mail (DKIM) is a standard that allows senders to sign their email messages and ISPs to use those signatures to verify that those messages are legitimate and have not been modified by a third party in transit.

An email message that is sent using DKIM includes a DKIM-Signature header field that contains a cryptographically-signed representation of all, or part, of the message. An ISP receiving the message can decode the cryptographic signature using a public key, published in the sender’s DNS record, to ensure that the message is authentic. For more information about DKIM, see http://www.dkim.org.

DKIM signatures are optional. You might decide to sign your email using a DKIM signature to enhance deliverability with DKIM-compliant ISPs.

When you contact us to setup domain verification we will provide DNS records to configure DKIM. The CNAME record setting will look similar to the following example:

Name                                                    Type  Value
ypols3mrcjvekhquuidt2uftyyxccyg1._domainkey.example.com CNAME ypols3mrcjvekhquuidt2uftyyxccyg1.dkim.amazonses.com
ywqd2axlckliticx6r6xqdgkgjm8zabr._domainkey.example.com CNAME ywqd2axlckliticx6r6xqdgkgjm8zabr.dkim.amazonses.com
qe4kjbc0xqlibiohsaid52vgh8gdc0ra._domainkey.example.com CNAME qe4kjbc0xqlibiohsaid52vgh8gdc0ra.dkim.amazonses.com

Contact support to get the domain verification process started.

Configure SilverStripe to use the sender domain for emails

First, configure your SilverStripe site’s default ‘from’ address for emails, such as password reset emails, by following the administrator emails documentation.

Then ensure that you send emails from your application with the correct from address:

$email = new Email('no-reply@example.com', 'user@gmail.com', 'hello', 'email body text');

For more extensive documentation on how to use the SilverStripe emailer, see the API documentation.

You will also have to remove the SS_SEND_ALL_EMAILS_FROM environment variable.

Debugging email

You can search all email sent with logs by using the search query log_type:postfix\/* in your stream. Note that if the email has been successfully sent and not been “bounced”, then we cannot determine the delivery success of the email.

Advanced email sending

If you send a lot of emails, want more control of delivery success or require more advanced email features, we highly recommend that you look for a provider that specialises in emails with an API that you can use in your SilverStripe code.

Receiving emails

SilverStripe Platform currently doesn’t provide an email server where you can receive emails.