ArgumentError: An SMTP To address is required to send a message. Set the message smtp_envelope_to, to , cc, or bcc address

北城余情 提交于 2019-12-09 07:44:39

问题


I got an rails 4 application with following mailer configuration:

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"
  }

Every time i try to send an mail with an testing mailer setup:

class TestMailer < ActionMailer::Base

  default :from => "noreply@myhost.com"

  def welcome_email
    mail(:to => "testmail@mymailaddress.com", :subject => "Test mail", :body => "Test mail body")
  end
end

TestMailer.welcome_email.deliver

I got this exception:

ArgumentError: An SMTP To address is required to send a message. Set the message smtp_envelope_to, to , cc, or bcc address.

Is it possible that i forget something to set.? And i can't find an configuration option for "smtp_envelope_to"


回答1:


The error message is not about the SMTP envelope, but about the sender:

An SMTP To address is required to send a message

the rest is just a generic message. Something in your testmail@mymailaddress.com is not working. Do you use a real, working address? If not, try with one.




回答2:


If you use sidekiq+actionmailer. Be careful, while sending email using hash. I was doing something like this MyWorker.perform_async("var1", {email: 'test@test.com', var2: 'test1234'})

I banged my head for couple of hours, why it is throwing the above error. Because in the perform_menthod hash[:email] is nil. You need to use hash["email"] to receive the email. I do not know, the reason. But it helped me to get rid of this error.




回答3:


Is :to => 'testmail@mymailaddress.com' how it is in your failing environment? If it's not a hardcoded email address, do make sure that a variable containing the to-address is not blank.

You don't have to set Mail::Message#smtp_envelope_to explicitly. It can guess it from its recipients, ie. Mail::Message#destinations (to + cc + bcc), but it doesn't seem to have any.



来源:https://stackoverflow.com/questions/18419611/argumenterror-an-smtp-to-address-is-required-to-send-a-message-set-the-message

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!