web-dev-qa-db-ja.com

ArgumentError:メッセージを送信するには、SMTP Toアドレスが必要です。メッセージsmtp_envelope_toを、cc、またはbccアドレスに設定します

私はRails 4アプリケーションを次のメーラー構成で取得しました:

config.action_mailer.delivery_method = :smtp
  config.action_mailer.default_url_options = { Host: 'myhost.com' }
  config.action_mailer.perform_deliveries = true

  config.action_mailer.smtp_settings = {
    :enable_starttls_auto => true,
    :address            => 'smtp.myhost.com',
    :port               => 587,
    :domain             => 'myhost.com',
    :authentication     => :login,
    :enable_starttls_auto => false,
    :tls                  => false,
    :openssl_verify_mode  => 'none',
    :ssl => false,
    :user_name          => "myusername",
    :password           => "mypassword"
  }

テスト用のメーラー設定でメールを送信しようとするたびに:

class TestMailer < ActionMailer::Base

  default :from => "[email protected]"

  def welcome_email
    mail(:to => "[email protected]", :subject => "Test mail", :body => "Test mail body")
  end
end

TestMailer.welcome_email.deliver

私はこの例外を得ました:

ArgumentError:メッセージを送信するには、SMTP Toアドレスが必要です。メッセージsmtp_envelope_toを、cc、またはbccアドレスに設定します。

設定するものを忘れた可能性はありますか?そして、「smtp_envelope_to」の設定オプションが見つかりません

25
bulleric

エラーメッセージはSMTPエンベロープに関するものではなく、送信者に関するものです。

メッセージを送信するには、SMTP Toアドレスが必要です

残りは単なる一般的なメッセージです。 [email protected] 動かない。実際の住所を使用していますか?そうでない場合は、1つで試してください。

27
Miotsu

Sidekiq + actionmailerを使用する場合。ハッシュを使用してメールを送信するときは注意してください。 MyWorker.perform_async( "var1"、{email: '[email protected]'、var2: 'test1234'})のようなことをしていた

私は数時間頭を叩きました、なぜそれが上記のエラーを投げているのですか?なぜなら、perform_menthodのhash [:email]はnilだからです。メールを受信するには、hash ["email"]を使用する必要があります。理由はわかりません。しかし、それは私がこのエラーを取り除くのに役立ちました。

5
cool_php

失敗した環境での:to => '[email protected]'はどうですか?ハードコードされた電子メールアドレスでない場合は、宛先アドレスを含む変数が空白でないことを確認してください。

Mail::Message#smtp_envelope_toを明示的に設定する必要はありません。つまり、受信者から推測できます。 Mail::Message#destinations(to + cc + bccへ)がありません。

2
carp