2013-08-24 15 views
22

adresi:ArgumentError: Bir ileti göndermek için adrese bir SMTP gerekir. cc, için, mesaj smtp_envelope_to ayarlayın veya bcc ben 4 uygulama şu mailler yapılandırmayla bir rayları var

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

i bir test mailler kurulum ile bir posta göndermek için deneyin her zaman:

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: An SMTP To address is required to send a message. Set the message smtp_envelope_to, to , cc, or bcc address.

Bu Benim yaptığım şey ayarlamak unutmak mümkün mü:

bu özel durum var.? Ve ancak gönderen hakkında,

cevap

26

hata mesajı SMTP zarfı ilgili değil "smtp_envelope_to" için bir yapılandırma seçeneği bulamıyor:

An SMTP To address is required to send a message

Geriye kalan sadece bir jenerik mesajdır. [email protected]'unuzda bir şey çalışmıyor. Gerçek, çalışan bir adres kullanıyor musunuz? Değilse, bir tane ile deneyin.

+3

Thx, benim hatam, bir smtp adresinin geçersiz kılınmasıydı ve bunu sıfırladı Oo – bulleric

2

:to => '[email protected]' bozuk ortamınızda nasıl çalışıyor? Sabit kodlanmış bir e-posta adresi değilse, adres içeren bir değişkenin boş olmadığından emin olun.

Mail::Message#smtp_envelope_to'u açıkça ayarlamak zorunda değilsiniz. Bunu alıcılarından tahmin edebilir, yani. Mail::Message#destinations (+ cc + bcc için), ancak hiç yok gibi görünüyor.

+0

Basit öneri ve tam olarak sorunumu çözdüm. Benim SMTP'mdeki APP_CONFIG değerindeki varsayılan değer: '' nil' döndürüyordu. – skplunkerin

4

Eğer sidekiq + actionmailer kullanırsanız. Hash kullanarak e-posta gönderirken dikkatli olun. Bu MyWorker.perform_async ("var1", {email: '[email protected]', var2: 'test1234'}) gibi bir şeyler yapıyordum.)

Birkaç saatliğine kafamı çarptım, neden atıyor Yukarıdaki hata. Çünkü perform_menthod hash içinde [: email] nil. E-postayı almak için hash ["email"] 'i kullanmanız gerekir. Ben nedenini bilmiyorum. Ama bu hatadan kurtulmam için bana yardımcı oldu.

+4

Belki oftopik için özür dilerim, ama hash ['email'] kullanmak zorunda olmanızın nedeni, serileştirme sürecinin redis'e dönüşmesidir. Sidekiq JSON belgesi oluşturur, otomatik olarak tüm anahtarları dizelere dönüştürür. –

İlgili konular