概要
Railsからメールを送信する機能を作る必要があったので
ActionMailerでGmailを使ってメールを送ろうとしてみました。
そしたらUserNameもPasswordも合ってるのにNet::SMTPAuthenticationErrorが出たので
対策を残しておきます。
2段階認証でアプリ パスワードを発行
以下のリンクから2段階認証を有効後、アプリパスワードを発行します
https://myaccount.google.com/security#signin
適当に生成したら、そのパスワード(16文字)をコピーして環境変数に入れました。
~/.zshrc
export MAIL_ADDRESS='メールアドレス'
export MAIL_PASSWORD='さっきコピーしたアプリパスワード'
環境変数を使って直接指定したらダメ!
最初は以下のように書いていました。
config/environments/development.rb
config.action_mailer.smtp_settings = {
enable_starttls_auto: true,
address: 'smtp.gmail.com',
port: '587',
domain: 'gmail.com',
authentication: 'plain',
user_name: ENV['MAIL_ADDRESS'],
password: ENV['MAIL_PASSWORD']
}
そこで以下のように変更。。。
config/environments/development.rb
# 一旦変数に入れておく
mail = ENV['MAIL_ADDRESS']
pass = ENV['MAIL_PASSWORD']
config.action_mailer.smtp_settings = {
enable_starttls_auto: true,
address: 'smtp.gmail.com',
port: '587',
domain: 'gmail.com',
authentication: 'plain',
user_name: mail,
password: pass
}
なんで直接指定したら動かないんだろう。。。
何かわかることがありましたら教えてください。
(もしかしたら僕だけに発生した問題かもしれないけど)