2009-12-18 7 views
12

sto avendo problemi realtà invio tramite ActionMailer in fase di sviluppo, sul mio localhost, con Rails 2.3.2 e rubino 1.8.6. Il file development.log mostra che ha "inviato" l'e-mail senza errori, ma l'e-mail non è stata ricevuta. Ho provato più indirizzi e-mail per l'invio e la ricezione e ho provato più configurazioni e plug-in, ma non posso ricevere l'e-mail da inviare. Qualsiasi aiuto sarebbe molto apprezzato - Mi sento come se stessi ballando attorno a un mucchio di versioni di soluzioni per diverse versioni di rotaie e rubini e non riesco a fissarlo. Apprezzerei molto qualsiasi commento. Grazie!email ActionMailer "inviati" in development.log, ma non hanno ricevuto

Plugin:

  • azione mailer TLS opzionali
  • smtp_tls

Diverse configurazioni e-mail:

ActionMailer::Base.smtp_settings = { 
    :enable_starttls_auto => true, #works in ruby 1.8.7 and above 
    :address => 'smtp.gmail.com', 
    :port => 587, 
    :domain => 'example.com', 
    :authentication => :plain, 
    :user_name => 'testacct', 
    :password => 'secret' 
    } 

config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    :tls => :true, 
    :address => 'smtp.gmail.com', 
    :port => 587, 
    :authentication => :plain, 
    :user_name => '[email protected]', 
    :password => 'secret' 
    #:enable_starttls_auto => true # for rails >= 2.2 && ruby >= 1.8.7 
    } 
    config.action_mailer.perform_deliveries = :true #try to force sending in development 
    config.action_mailer.raise_delivery_errors = :true 
    config.action_mailer.default_charset = "utf-8" 

development.log:

Sent mail to [email protected] 

Date: Fri, 18 Dec 2009 00:27:06 -0800 
From: Test Email Acct <[email protected]> 
To: [email protected] 
Subject: Signup 
Mime-Version: 1.0 
Content-Type: multipart/alternative; boundary=mimepart_4b2b3cda9088_634334302a5b7 


--mimepart_4b2b3cda9088_634334302a5b7 
Content-Type: text/html; charset=utf-8 
Content-Transfer-Encoding: Quoted-printable 
Content-Disposition: inline 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww= 
w.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html lang=3D'en' xml:lang=3D'en' xmlns=3D'http://www.w3.org/1999/xhtml'>= 

    <head> 
    <meta content=3D'text/html;charset=3DUTF-8' http-equiv=3D'content-typ= 
e' /> 
    </head> 
    <body> 
    Welcome Email 
    <p> 
     user name: 
     lfglkdfgklsdf 
     activation link: 
     http://localhost:3000/login 
    </p> 
    </body> 
</html> 

--mimepart_4b2b3cda9088_634334302a5b7-- 
+0

Verificare se quelli sono segnalati come spam. – Waseem

+0

No. Non spam. – user117046

+0

Grazie ragazzi, non so cosa sia successo (forse qualcosa con il server smtp), ma funziona oggi con lo stesso codice esatto. guh. – user117046

risposta

8

È necessario utilizzare true e non :true.

:tls => true 
... 
config.action_mailer.perform_deliveries = true #try to force sending in development 
config.action_mailer.raise_delivery_errors = true 
+0

Non sono sicuro, ma sono intercambiabili? Ho anche provato a usare "true" invece di ": true". – user117046

+2

Possono essere intercambiabili, poiché probabilmente la libreria sta solo controllando se non sono 'nil' e non' false'. – henrikhodne

4

Nel caso qualcuno deve affrontare questo problema, impostare "config.action_mailer.raise_delivery_errors = true" in development.rb nella cartella di ambienti e provare a inviare di nuovo la posta. Questo dovrebbe sollevare qualsiasi errore si sta incontrando.

A volte nella riga 8 di smtp_tls.rb, il metodo check_auth_args accetta solo 2 argomenti: utente e segreto. Rimuovi l'argomento "authtype" se lo vedi e riprova. Dovrebbe funzionare.

+0

Ottimo consiglio! Vale anche la pena notare che se stai specificando alcune parti della tua configurazione altrove, es. utilizzando [dotenv] (https://github.com/bkeepers/dotenv), che consiglio vivamente, assicurati di avvolgere qualsiasi valore che possa contenere caratteri speciali tra virgolette singole. – schmielson

12

Inserire il seguente in config/environments/development.rb

config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true 

Sarà sovrascrivere le impostazioni in config/environment.rb

anche per le rotaie 2.X avrete bisogno di impostare:

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :enable_starttls_auto => true, 
    :address  => "smtp.gmail.com", 
    :port   => 587, 
    :domain   => "domain.com", 
    :user_name  => "[email protected]", 
    :password  => "secret_passsword", 
    :authentication => :plain 
} 
+2

Grazie per il suggerimento su "raise_delivery_errors = true".Questo mi ha aiutato ad avvicinarmi all'identificazione dell'errore, ovvero che avevo inserito solo la parte "** name **" nel valore di 'user_name', non l'indirizzo email completo" **[email protected]** " . Dopo aver inserito l'indirizzo email completo, l'email è stata inviata! Nota: non * ho * bisogno di impostare 'perform_deliveries = true'. E sto facendo funzionare Rails 3.1.0 in questo momento. – user664833

+0

Quindi sto avendo lo stesso identico problema. No non è nello spam, sì i messaggi confermati inviati, e sì ho anche aumentare gli errori di consegna ed eseguire le consegne impostate su true. Abbiamo deciso che alla fine ha funzionato magicamente? Nessuna risposta chiara qui ... – fresh5447

Problemi correlati