2012-12-12 9 views
12

Chiunque ha la fortuna di configurare ActionMailer per inviare e-mail tramite un account Zoho?Rails Configurazione ActionMailer per Zoho

Queste sono le mie impostazioni:

ActionMailer::Base.smtp_settings = { 
    :address    => "smtp.zoho.com", 
    :port     => 465, 
    :domain    => 'example.com', 
    :user_name   => '[email protected]', 
    :password    => 'n0tmypa$$w0rd', 
    :authentication  => :login 
} 

Tuttavia, chiamando .deliver volte su:

irb(main):001:0> AdminMailer.signup_notification('asfd').deliver 
Timeout::Error: Timeout::Error 
     from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill' 
     from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill' 
     from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil' 
     from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:132:in `readline' 
     from C:/Ruby193/lib/ruby/1.9.1/net/smtp.rb:929:in `recv_response' 
     from C:/Ruby193/lib/ruby/1.9.1/net/smtp.rb:552:in `block in do_start' 
     from C:/Ruby193/lib/ruby/1.9.1/net/smtp.rb:939:in `critical' 
     from C:/Ruby193/lib/ruby/1.9.1/net/smtp.rb:552:in `do_start' 
     from C:/Ruby193/lib/ruby/1.9.1/net/smtp.rb:519:in `start' 
     from C:/Ruby193/lib/ruby/gems/1.9.1/gems/mail-2.4.4/lib/mail/network/delivery_methods/smtp.rb:144:in `deliver!' 

La help docs dicono di utilizzare la porta 465 e l'autenticazione SSL. Ho provato con e senza :enable_starttls_auto => true ma è ancora in timeout.

In particolare, il docs specificare le seguenti impostazioni:

>  Email Address: [email protected] 
>  User Name format: [email protected] 
>  Secure Connection (SSL) Yes 
>  Outgoing Mail Server Name: smtp.zoho.com 
>  Outgoing Port No.: 465 
>  Outgoing Mail Server requires authentication: Yes 

Tutte le idee?

p.s. Ho configurato Outlook per utilizzare le impostazioni nell'email help docs e in uscita funziona correttamente. telnet to smtp.zoho.com 465 si connette anche.

+0

stai provando dal tuo host locale ??? – Jean

+0

Lo sono, anche se ovviamente il server SMTP è remoto (zoho.com). Questo importa? Il client di posta elettronica (Outlook) con le stesse impostazioni è anche sullo stesso host locale. – lambinator

+0

Non si sa se si desidera utilizzare Outlook, Microsoft non sembra tollerare la posta in uscita dalle applicazioni, anche per le cose necessarie come le conferme delle e-mail. – Noz

risposta

29
# Action Mailer 
ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = {    
    :address    => "smtp.zoho.com", 
    :port     => 465,     
    :user_name   => '[email protected]', 
    :password    => 'password',   
    :authentication  => :login, 
    :ssl     => true, 
    :tls     => true, 
    :enable_starttls_auto => true  
} 

Questo ha funzionato per me. Le tue impostazioni potrebbero andare bene, alcune reti locali bloccano questo tipo di pacchetti. Ho dovuto testarlo attraverso la mia rete 3G.

+1

lasciato fuori il delivery_method. : S – lambinator

+0

Qualcuno ha provato queste impostazioni con Spree? –

+1

Salvato la mia giornata! :) – vellotis

0

Non sono sicuro che Zoho abbia cambiato le impostazioni di sicurezza, ma la risposta accettata di @Tyrel Richey non ha funzionato per me. Tuttavia, il seguente fa:

/config/initializers/action_mailer.rb ..

 
# ActionMailer email configuration 
ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
    :address    => ENV['SMTP_ADDRESS'], 
    :port     => ENV['SMTP_PORT'], 
    :domain    => ENV['SMTP_DOMAIN'], 
    :user_name   => ENV['SMTP_USERNAME'], 
    :password    => ENV['SMTP_PASSWORD'], 
    :authentication  => :login, 
    :enable_starttls_auto => true 
} 

Dove ..
:address = smtp.zoho.com
:port = 587
:domain è localhost in fase di sviluppo, e l'URL dal vivo della produzione (ad esempio, example.com)

+0

la tua porta dovrebbe essere 465. imposta ssl e tls su true –

+0

Ha funzionato @ DankeXie, grazie :) –

3

FYI:

Supponiamo che il tuo dominio sia abc.com.
Supponiamo di avere "predefinito da" sul tuo mailer con un dominio diverso, ad es.

default from: "\"Elephant\" <[email protected]>" 

Questo non funzionerà se non si cambia la tua 'di default da' utilizzare lo stesso dominio sul tuo conto Zoho.
Così,

default from: "\"Elephant\" <[email protected]>" 

funzionerà.

0

ho mail di invio con Rails 4.2.3 in questo modo ...

# config/environments/development.rb 
Rails.application.configure do 
#... 
    config.action_mailer.default_url_options = { host: 'domain' } 
    config.action_mailer.smtp_settings = { address: 'smtp.zoho.com', port: 465, user_name: '[email protected]', password: 'mypassword', authentication: :login, ssl: true } 
end 

Ovviamente si può utilizzare questo in produzione, nonché aggiungendo questo ai config/environments/production.rb

Ho anche impostare l'indirizzo e-mail in config/initializers/devise.rb così posso inviare istruzioni per reimpostare la password.

config.mailer_sender = '[email protected]' 


Riferimenti

0

Queste impostazioni hanno lavorato per me in produzione.

Rails.application.routes.default_url_options[:host] = 'eyehawk.io' 
    config.action_mailer.default_url_options = { :host => 'eyehawk.io' } 
    config.action_mailer.perform_caching = false 

    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.perform_deliveries = true 
    config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.default :charset => "utf-8" 

    config.action_mailer.smtp_settings = { 
     :address    => "smtp.zoho.com", 
     :port     => 587, 
     :domain    => "zoho.com", 
     :user_name   => "[email protected]", 
     :password    => ENV['SMTP_PASSWORD'], 
     :authentication  => :plain, 
     :enable_starttls_auto => true 
    }