私は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」の設定オプションが見つかりません
エラーメッセージはSMTPエンベロープに関するものではなく、送信者に関するものです。
メッセージを送信するには、SMTP Toアドレスが必要です
残りは単なる一般的なメッセージです。 [email protected]
動かない。実際の住所を使用していますか?そうでない場合は、1つで試してください。
Sidekiq + actionmailerを使用する場合。ハッシュを使用してメールを送信するときは注意してください。 MyWorker.perform_async( "var1"、{email: '[email protected]'、var2: 'test1234'})のようなことをしていた
私は数時間頭を叩きました、なぜそれが上記のエラーを投げているのですか?なぜなら、perform_menthodのhash [:email]はnilだからです。メールを受信するには、hash ["email"]を使用する必要があります。理由はわかりません。しかし、それは私がこのエラーを取り除くのに役立ちました。
失敗した環境での:to => '[email protected]'
はどうですか?ハードコードされた電子メールアドレスでない場合は、宛先アドレスを含む変数が空白でないことを確認してください。
Mail::Message#smtp_envelope_to
を明示的に設定する必要はありません。つまり、受信者から推測できます。 Mail::Message#destinations
(to + cc + bccへ)がありません。