3

バックグラウンド

Amazon EC2 の Ubuntu インスタンスで実行されている Rails 3.2.x での ActionMailer の Gmail セットアップに関する問題を解決しようとしています。アプリケーションは Nginx + Passenger で実行されています。

セットアップは次のとおりです

ファイル: config/environments/production.rb

config.action_mailer.delivery_method = :smtp
      config.action_mailer.smtp_settings = {
         :address => "smtp.gmail.com",
         :port => 587,
         :domain => "gmail.com",
         :authentication => :plain,
         :user_name => "<username>@gmail.com",
         :password => "<secret-word>",
         :enable_starttls_auto => true
 }

電子メールは、Web ログインで検証され、テスト メッセージを送信する Google アカウントで機能しています。

コントローラーは、次のようなメソッドを介して送信を開始します。

email_list_controller.rb

def email_test_send
   @email = params[:email]
   @message = Message.find(params[:id])

   @member = Member.find_by_last_name("Bloggs")
   MemberMailer.delay.all_member_email(@member.email, @message)

   redirect_to messages_path, :notice => "Test Email has been sent."
 end

次のように定義された MemberMailer クラスを使用します。

class MemberMailer < ActionMailer::Base
  default from: "blah@gmail.com"
  default cc: "blah1@gmail.com, blah2@gmail.com"
  default content_type: "text/html"

  # send a message to member
  def all_member_email(email, message)

      @message = message
      mail(:to => email, :subject => message.subject)
  end

終わり

システムは、バックグラウンド処理に Delayed_Job Gem を使用しており、送信はバックグラウンド ジョブ処理ありとなしの両方でテストされています。;

結果

問題は、メッセージが送信されず、次のようになることです

  1. production.log に出力 (log_level を DEBUG に設定)

    HTMLパラメータとしてのEmailListController#email_test_sendによる処理: {"utf8"=>"✓", "authenticity_token"=>"D5ZCb+Ha63WbPmd47/1/P3rpFJFiSbnrYya+YaSmBic=", "email"=>"blah@gmail.com", "commit"=>"Submit", "id"=>"1", "method"=>"post"}

  2. メッセージが配信されない

  3. Google アカウントの送信済みフォルダーに、送信メッセージの詳細が表示されません。

  4. EC2 上のサーバーがtelnet 587経由で Google SMTP サーバーに接続できることを確認しました

  5. Rails 3 で ActionMailer を使用するための Gmail アカウントの設定など、StackOverflow に関するその他の質問を調査しました。

  6. delayed_jobs テーブルのデータベースに障害はありません。

他の分野を見るために立ち往生していますか?サーバーを再起動して、構成ファイルなどを確実にロードしようとしましたが、うまくいきませんでした。

4

1 に答える 1

0

で次の 2 つのオプションを必ず設定してくださいconfig/environments/production.rb

config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true
于 2013-11-15T05:25:49.257 に答える