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

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

ただいまの
回答率

88.91%

Amazon SESのメールが届かない状態になっています。

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 300

avicii

score 39

私は、現在本番環境で、Amazon SESを導入し、お問い合わせページからメールを送るようにしたいと考えています。しかし、お問い合わせページからの送信がうまくいかない状態になっています。

試したこと 
・ドメイン・メールの認証 完了済み✔︎
・Send a test emailは成功✔︎
・sending statics 送れてない✖︎

参考ページ
・https://qiita.com/tanakaworld/items/94f1ba66801100f6a44f

お問い合わせメール送信後のコンソールの状況

I, [2020-07-15T05:29:09.899337 #12692]  INFO -- : Started GET "/contact" for 103.5.140.154 at 2020-07-15 05:29:09 +0000
I, [2020-07-15T05:29:09.903009 #12692]  INFO -- : Processing by CustomerController#contact as HTML
I, [2020-07-15T05:29:09.905476 #12692]  INFO -- :   Rendered customer/contact.html.erb (2.0ms)
I, [2020-07-15T05:29:09.905654 #12692]  INFO -- : Completed 200 OK in 3ms (Views: 2.4ms | ActiveRecord: 0.0ms)
I, [2020-07-15T05:29:36.914159 #12690]  INFO -- : Started POST "/customer/confirm" for 103.5.140.154 at 2020-07-15 05:29:36 +0000
I, [2020-07-15T05:29:36.917798 #12690]  INFO -- : Processing by CustomerController#confirm as HTML
I, [2020-07-15T05:29:36.917882 #12690]  INFO -- :   Parameters: {"utf8"=>"✓", "authenticity_token"=>"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "customer"=>{"name"=>"とし", "email"=>"$$$$$$$$$$$$$$$$$@gmail.com", "about"=>"投稿の件について", "message"=>"いつもお世話になっております。としです。"}, "commit"=>"同意して送信"}
I, [2020-07-15T05:29:36.920949 #12690]  INFO -- :   Rendered customer/confirm.html.erb (2.5ms)
I, [2020-07-15T05:29:36.921113 #12690]  INFO -- : Completed 200 OK in 3ms (Views: 2.9ms | ActiveRecord: 0.0ms)
I, [2020-07-15T05:29:39.715659 #12692]  INFO -- : Started POST "/customer/thanks" for 103.5.140.154 at 2020-07-15 05:29:39 +0000
I, [2020-07-15T05:29:39.719248 #12692]  INFO -- : Processing by CustomerController#thanks as HTML
I, [2020-07-15T05:29:39.719319 #12692]  INFO -- :   Parameters: {"utf8"=>"✓", "authenticity_token"=>"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "customer"=>{"name"=>"とし", "email"=>"$$$$$$$$$$$$$$$@gmail.com", "about"=>"投稿の件について", "message"=>"いつもお世話になっております。としです。"}, "commit"=>"送信する"}
I, [2020-07-15T05:29:39.720596 #12692]  INFO -- :   Rendered customer_mailer/received_email.html.erb within layouts/mailer (0.2ms)
I, [2020-07-15T05:29:39.720885 #12692]  INFO -- :   Rendered customer_mailer/received_email.text.erb within layouts/mailer (0.0ms)
D, [2020-07-15T05:29:39.722412 #12692] DEBUG -- : 
CustomerMailer#received_email: processed outbound mail in 2.5ms
I, [2020-07-15T05:29:40.253488 #12692]  INFO -- : 
Sent mail to $$$$$$$$$$$$$$$$$@gmail.com (531.0ms)
D, [2020-07-15T05:29:40.253570 #12692] DEBUG -- : Date: Wed, 15 Jul 2020 05:29:39 +0000
From: Testrooper <$$$$$$$$$$$$$$$$$@gmail.com>
To: $$$$$$$$$$$$$$$@gmail.com
Message-ID: <$$$$$$$$$$$$$$$$$$$$$$$$$$$$$>
Subject: =?UTF-8?Q?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_5f0e9443b01c8_31941079c10297c";
 charset=UTF-8
Content-Transfer-Encoding: 7bit


----==_mimepart_5f0e9443b01c8_31941079c10297c
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: base64

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

----==_mimepart_5f0e9443b01c8_31941079c10297c
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: base64

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

----==_mimepart_5f0e9443b01c8_31941079c10297c--

initializers/aws.rb

ActionMailer::Base.add_delivery_method(
  :ses,
  AWS::SES::Base,
  access_key_id: '$$$$$$$$$$$$$$$',
  secret_access_key: '$$$$$$$$$$$$$$$$$$$',
  server: 'email.us-west-2.amazonaws.com'
)

environments/production.rb

  config.action_mailer.raise_delivery_errors = false
  config.mailer_sender = 'Testrooper <$$$$$$$$$$$$$$$$$$@gmail.com>'
  config.action_mailer.default_url_options = { host: '$$$$$$$$$$$$$$' }
  config.action_mailer.delivery_method = :ses
  config.action_mailer.smtp_settings = { :enable_starttls_auto => false }

customer_mailer.rb

class CustomerMailer < ApplicationMailer
  default from: "Testrooper <$$$$$$$$$$$$$$$$$$$$@gmail.com>"   # 送信元アドレス
  layout 'mailer'    

  def received_email(customer)
    @customer = customer
    mail(
            to: 'Testrooper <$$$$$$$$$$$$$$$$$$$$$@gmail.com>',
            subject: 'お問い合わせを承りました'
        )
  end
end


received_email.html.erb

<!doctype html>
<html lang="ja">
 <head>
   <meta content="text/html; charset=UTF-8" />
 </head>
 <body>
   <p>Name:    <%= @customer.name %></p>
   <p>Email:   <%= @customer.email %></p>
   <p>Subject: <%= @customer.about %></p>
   <p>Message: <%= @customer.message %></p>
   <hr />
 </body>
</html>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yu_1985

    2020/07/15 16:06

    SESのコンソールからSending Statisticsを見て、メールが送信されているかを確認してみてください。
    メールが送信されているか、そもそもメールが送信されていないかをまず切り分けましょう。

    キャンセル

  • avicii

    2020/07/15 18:10

    テストメールでは、メールを送ることができるのですが、お問い合わせページからの送信の場合は、メールが送れていません。

    キャンセル

回答 1

0

そもそもメールが送れていないのであれば、まずはSESの権限周りを疑うところです。
アクセスキーの指定が誤っていないか、アクセスキーのIAMユーザに必要な権限があるかを確認してください、と書くところですが、EC2インスタンス上で使っているならそもそもアクセスキーを使わないでインスタンスに設定したIAMロールによる権限指定にしましょう。
大抵のケースではアクセスキーとシークレットキーを指定しないでおけばデフォルトではIAMロールの権限を使ってくれます。

あと気になったのはここです。

default from: "Testrooper <$$$$$$$$$$$$$$$$$$$$@gmail.com>"   # 送信元アドレス

カスタムの MAIL FROM ドメインの設定

注記
自分が所有していないドメインのアドレスにカスタム MAIL FROM ドメインを設定することはできません (たとえば、gmail.com ドメインのアドレスにカスタム MAIL FROM ドメインを作成することはできません。 必要な DNS レコードをドメインに追加できないためです)。

とのことなので、fromのアドレスがこれでは送れないような…。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/17 14:39

    アクセスキーとシークレットキーを指定しないで、やってみました。
    そうすると、ArgumentError (No :access_key_id provided)というエラーが起きます。
    この場合は、access_key_idで設定すればよろしいでしょうか?

    キャンセル

  • 2020/07/17 14:42 編集

    実行するEC2インスタンスにIAMロールを指定していなかったり、十分に権限がなかったりしたらそりゃそうなりますね…。
    https://aws.amazon.com/jp/premiumsupport/knowledge-center/assign-iam-role-ec2-instance/

    IAMロールの権限を使いたい場合はむしろキーを指定してはいけません(キーが優先されてしまうため)


    ただ、権限不足でそのエラーがでるということは、もともと権限は足りていたけどそれでも送れていない、ということではないでしょうか。
    やはり、記載の通りfromのアドレスが問題なのでは…。

    追記
    あ、「指定しないで」というのは空にするではなくその行自体を消すイメージです。

    キャンセル

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

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る