質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SendGrid

SendGridは、米SendGrid社のクラウド型メール配信サービス。アカウントを作成するだけですぐに利用することが可能です。さらに到達率向上のための送信ドメイン認証対応や、柔軟性のあるスケーラビリティなど多くの機能を有します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Q&A

0回答

771閲覧

heroku本番環境でのメールの送信ができないので送信できるようにしたい。

rito_yukinoko

総合スコア0

SendGrid

SendGridは、米SendGrid社のクラウド型メール配信サービス。アカウントを作成するだけですぐに利用することが可能です。さらに到達率向上のための送信ドメイン認証対応や、柔軟性のあるスケーラビリティなど多くの機能を有します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

0グッド

0クリップ

投稿2021/09/26 03:18

編集2021/10/18 09:03

前提・実現したいこと

heroku本番環境でのメールの送信ができないので送信できるようにしたい。

発生している問題・エラーメッセージ

heroku logs --tail --app アプリ名 にてログを確認。

送信後、開発環境では送信が成功されるが本番環境では

ArgumentError (SMTP To address may not be blank: []):

と表示されます。

該当のソースコード

production.rb

ruby

1Rails.application.configure do 2 〜ここまで割愛 3 4ActiveRecord::Middleware::DatabaseSelector::Resolver::Session 5 config.action_mailer.raise_delivery_errors = true 6 config.action_mailer.delivery_method = :smtp 7 config.action_mailer.smtp_settings = { 8 address: 'smtp.sendgrid.net', 9 port: 587, 10 domain: 'heroku.com', 11 user_name: 'apikey', 12 password: ENV['SENDGRID_APIKEY'], 13 authentication: 'plain', 14 enable_starttls_auto: true 15 } 16end

contacts_controller.rb

ruby

1class ContactsController < ApplicationController 2 def new 3 @contact = Contact.new 4 end 5 6 def create 7 @contact = Contact.new(contact_params) 8 if @contact.save 9 ContactMailer.contact_mail(@contact).deliver 10 flash[:success] = 'フォームを送信しました。' 11 redirect_to root_path 12 else 13 render :new 14 end 15 end 16 17 private 18 19 def contact_params 20 params.require(:contact).permit(:name, :message) 21 end 22end 23

contact_mail.erb

ruby

1<%= @contact.name%>様からのメッセージです。 2 3=========================== 4 5 【お問合せ内容】 6 <%= @contact.message %> 7 8===========================

contact_mailer.rb

ruby

1class ContactMailer < ApplicationMailer 2 def contact_mail(contact) 3 @contact = contact 4 mail to: ENV["TO_MAIL_ADDRESSE"], subject: "お問い合わせについて【自動送信】" 5 end 6 7end

application_mailer.rb

ruby

1class ApplicationMailer < ActionMailer::Base 2 default from: 'from@example.com' 3 layout 'mailer' 4end 5

new.html.erb

ruby

1<h2 class="title8">CONTACT</h2> 2 3<%= form_with model: @contact do |form| %> 4 <div class="Form"> 5 <div class="Form-Item"> 6 <p class="Form-Item-Label"> 7 <span class="Form-Item-Label-Required"></span>氏名</p> 8 <%= form.text_field :name, placeholder: "例)山田太郎", class:"Form-Item-Input" %> 9 </div> 10 11 <div class="Form-Item"> 12 <p class="Form-Item-Label isMsg"><span class="Form-Item-Label-Required"></span>お問い合わせ内容</p> 13 <%= form.text_area :message, placeholder: "例) 14 件名 15 ----------------------------------------------- 16 メールアドレス 17 内容",class:"Form-Item-Input area" %> 18 </div> 19 <%= form.submit "送信する", class:"Form-Btn"%> 20 </div> 21<% end %> 22

development.rb

ruby

1Rails.application.configure do 2 〜ここまで割愛 3 4 config.file_watcher = ActiveSupport::EventedFileUpdateChecker 5 6 config.action_mailer.raise_delivery_errors = true 7 config.action_mailer.delivery_method = :smtp 8 config.action_mailer.smtp_settings = { 9 address: 'smtp.gmail.com', 10 port: 587, 11 domain: 'gmail.com', 12 user_name: ENV['G_MAIL_ADDRESS'], 13 password: ENV['G_MAIL_PASSWORD'], 14 authentication: 'plain', 15 enable_starttls_auto: true 16 } 17end

試したこと

最初はproduction.rbも「user_name」「password」をsendgridのユーザー名、パスワードを「heroku config:set ~」にて設定していたのですが、調べていくとsendgridの仕様が2021/1/20辺りからAPI KEYをつかい、上記のproduction.rbの書き方になったそうです。

一応従来のユーザー名、パスワードの方法も含め試したのですがエラーを吐いてしまいます。

おそらくですがどちらのやり方でも環境変数がうまく本番環境から読み込めていないのではないかと考えているのですが、どのようにすれば読み込んでもらえるのかわかりません。

どうかご有識のある方ご教授ください。
よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

参考文献
仕様が変わったとの記事
https://www.bokukoko.info/entry/2020/12/07/080000

環境変数について
https://qiita.com/Sinhalite/items/9732229f4f0e781abd1c

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問