##起きたこと
RUby on Railsのアプリ内でお問い合わせ機能を実装しようとActionMailerを導入しました。
開発環境では何もエラーが起きていませんが、本番環境でメール送信処理をすると下記エラーメッセージが表示されます。
Net::SMTPAuthenticationError in ContactsController#create
534-5.7.9 Application-specific password required. Learn more at
##調べたこと
いろいろ調べてみるとmailerでgmailを使用しているため、googleのセキュリティがアプリケーションからのメール送信を弾いているようなのでそこを変更する必要があるようでした。
参照
https://karur4n.hatenablog.com/entry/2015/03/07/234600
https://qiita.com/mr-myself/items/d2911a6c77406c40eb9a
いずれもgmailのアカウント設定からセキュリティへ進み、二段階認証をおインにした後、アプリパスワードという項目から独自のパスワードを作成し、それをmailerのファイルに記載しているgmailのログインパスワードに置き換えるというものでした。
##試してみて
いろいろ試してみましたがgmailのアプリパスワードの作成方法が間違っているのか、mailerファイルでの書き方が間違っているのかエラーが解消されません。
下記、行った手順を記載いたしますのでご教授いただけますと幸いです。
上記のように二段階設定をオンにして、アプリパスワードをクリックします。
②
次に正気の選択からその他を選び適当にアプリ名を入力します。
今回はAAAとしたとします。
③
上記の画像に表示されているパスワードのスペースを詰めてrailsの環境変数を記載している.envファイルに記載します。
(上記画像のパスワードはgmailアカウント上ではすでに削除しました。)
④
ruby
1if Rails.env.production? 2 3 mail = ENV['OWNER_ADDRESS'] 4 pass = ENV['OWNER_ADDRESS_PASSWORD'] 5 6 ActionMailer::Base.delivery_method = :smtp 7 ActionMailer::Base.smtp_settings = { 8 address: 'smtp.gmail.com', 9 domain: 'gmail.com', 10 port: 587, 11 user_name: mail, 12 password: pass, 13 authentication: 'plain', 14 enable_starttls_auto: true 15 } 16elsif Rails.env.development? 17 ActionMailer::Base.delivery_method = :letter_opener 18else 19 ActionMailer::Base.delivery_method = :test 20end 21
そして上記のようにパスワードを読み込む記述をして試しましたがエラーは解決せず。。
##怪しい部分
gmailのセキュリティのアプリパスワード生成の部分でその他を選んでいる為エラーが起きているのかと感じ、試しにメールを選択し、画面の操作に従いましたが、メールでの設定がうまくできずこちらは試すことができませんでした。
アドバイスよろしくお願いいたします。
あなたの回答
tips
プレビュー