21
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RailsのActionMailerでGmailを使ったらNet::SMTPAuthenticationErrorが出た

Last updated at Posted at 2016-09-26

概要

Railsからメールを送信する機能を作る必要があったので
ActionMailerでGmailを使ってメールを送ろうとしてみました。
そしたらUserNameもPasswordも合ってるのにNet::SMTPAuthenticationErrorが出たので
対策を残しておきます。

2段階認証でアプリ パスワードを発行

以下のリンクから2段階認証を有効後、アプリパスワードを発行します
https://myaccount.google.com/security#signin

スクリーンショット 2016-09-26 22.26.27.png

適当に生成したら、そのパスワード(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
  }

なんで直接指定したら動かないんだろう。。。
何かわかることがありましたら教えてください。
(もしかしたら僕だけに発生した問題かもしれないけど)

21
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?