I added two verified email addresses to AWS SES so that I could send emails from/to them while in the SES Sandbox.
class UserMailer < ApplicationMailer
default from: '[email protected]'
def welcome_email
mail(to: '[email protected]', subject: 'Welcome to My Awesome Site')
end
end
config.action_mailer.smtp_settings = {
address: 'email-smtp.eu-west-1.amazonaws.com',
port: 25, # or 465 or 587
enable_starttls_auto: <boolean>,
tls: <boolean>,
ssl: <boolean>,
user_name: '<username>',
password: '<password>'
}
$ rails r "UserMailer.with({}).welcome_email.deliver_now"
Ports 25 and 587 require enable_starttls_auto
to be set to true
, and for tls
and ssl
to be set to false
.
Port 465 ignores enable_starttls_auto
and requires either tls
or ssl
to be set to true
.
This relates to the Connecting to the Amazon SES SMTP Endpoint documentation which says that SES supports STARTTLS on ports 25, 587 and 2587, and supports TLS on ports 465 and 2465.
Port | Enable STARTTLS Auto | TLS | SSL | Outcome |
---|---|---|---|---|
25 | True | True | True | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |
25 | True | True | False | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |
25 | True | False | True | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |
25 | True | False | False | Email sent correctly |
25 | False | False | False | Net::SMTPAuthenticationError: 530 Must issue a STARTTLS command first |
25 | False | True | True | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |
25 | False | True | False | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |
25 | False | False | True | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |
465 | True | True | True | Email sent correctly |
465 | True | True | False | Email sent correctly |
465 | True | False | True | Email sent correctly |
465 | True | False | False | Net::ReadTimeout: Net::ReadTimeout |
465 | False | False | False | Net::ReadTimeout: Net::ReadTimeout |
465 | False | True | True | Email sent correctly |
465 | False | True | False | Email sent correctly |
465 | False | False | True | Email sent correctly |
587 | True | True | True | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |
587 | True | True | False | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |
587 | True | False | True | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |
587 | True | False | False | Email sent correctly |
587 | False | False | False | Net::SMTPAuthenticationError: 530 Must issue a STARTTLS command first |
587 | False | True | True | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |
587 | False | True | False | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |
587 | False | False | True | OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol |