2012-12-12 26 views
12

Ktoś ma konfigurację szczęścia, aby ActionMailer wysłał email za pośrednictwem konta Zoho?Rails Konfiguracja ActionMailer dla Zoho

Oto moje ustawienia:

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

Jednak wywołanie .deliver razy się:

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!' 

help docs powiedzieć używać portu 465 i uwierzytelnianie SSL. Próbowałem z i bez :enable_starttls_auto => true, ale nadal przekracza limit czasu.

Konkretnie, docs określić następujące ustawienia:

>  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 

jakieś pomysły?

p.s. Skonfigurowałem program Outlook do korzystania z ustawień w help docs, a poczta wychodząca działa poprawnie. Telnet do smtp.zoho.com 465 również się łączy.

+0

Czy próbujesz z lokalnego hosta ??? – Jean

+0

Jestem, chociaż oczywiście serwer SMTP jest zdalny (zoho.com). Czy to ma znaczenie? Klient poczty e-mail (program Outlook) z tymi samymi ustawieniami znajduje się również na tym samym serwerze lokalnym. – lambinator

+0

Nie wiem, czy chcesz używać Outlooka, Microsoft nie wydaje się tolerować poczty wychodzącej z aplikacji - nawet w przypadku niezbędnych rzeczy, takich jak potwierdzenia e-mail. – Noz

Odpowiedz

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  
} 

To zadziałało dla mnie. Twoje ustawienia mogą być dobre, niektóre sieci lokalne blokują tego typu pakiety. Musiałem to przetestować poprzez moją sieć 3G.

+1

pominięto metodę delivery_method. : S – lambinator

+0

Czy ktoś wypróbował te ustawienia w Spree? –

+1

Uratowałem mój dzień! :) – vellotis

0

Nie jestem pewien, czy Zoho zmieniło ustawienia zabezpieczeń, ale zaakceptowana odpowiedź @Tyrel Richey nie działa dla mnie. Jednak dodaje się robi:

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

Gdzie ..
:address = smtp.zoho.com
:port = 587
:domain jest localhost w rozwoju, a na żywo URL w produkcji (np example.com)

+0

twój port powinien być 465. ustawić ssl i tls na true. –

+0

Udało się @ DankeXie, dzięki :) –

3

FYI:

Załóżmy, że Twoja domena to abc.com.
Załóżmy, że masz "domyślną wartość" na swoim programie pocztowym w innej domenie, np.

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

Ten nie zadziała chyba zmienić domyślne „z” stosując tę ​​samą domenę na swoim koncie Zoho.
Więc

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

zadziała.

0

mam wysyłania poczty z Rails 4.2.3 jak tak ...

# 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 

Można oczywiście użyć w produkcji, jak również przez dodanie tego do config/environments/production.rb

ja również ustawić adres e-mail w config/initializers/devise.rb, więc mogę wysłać instrukcję resetowania hasła.

config.mailer_sender = '[email protected]' 


Referencje

0

Te ustawienia pracował dla mnie w produkcji.

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 
    } 
Powiązane problemy