自前運用の SMTP サーバから AWS SES に切り替える作業があったんだけど、表題のエラーが出て「!?」となっていた。
Must issue a STARTTLS command first
答えは全部ここに書いてあるんですが、ちゃんと暗号化して送信しろ、という話です。
エラー時の該当 smtp_settings
がこちら。
config.action_mailer.smtp_settings = { :enable_starttls_auto => false, :address => 'SMTP エンドポイント', :port => 587, :domain => 'SES で検証済みドメイン', :user_name => 'ユーザ名', :password => 'パスワードクレデンシャル' }
:enable_starttls_auto => false
ハイ、そうですね。 ということで、こうする。
config.action_mailer.smtp_settings = { :enable_starttls_auto => true, :address => 'SMTP エンドポイント', :port => 587, :domain => 'SES で検証済みドメイン', :user_name => 'ユーザ名', :password => 'パスワードクレデンシャル' }
これでオッケー!
送信できる暗号化の組み合わせ
調べてたら以下を見つけた。
2018-04-30-rails-and-aws-ses.md · GitHub
もし「暗号化利用できる環境なのに送信できない!」という場合は、ポート番号を 587
465
あたりで切り替えるとうまく行くかもしれません。