2009-12-18 9 views
12

je vais avoir des problèmes fait l'envoi via ActionMailer dans le développement, sur mon localhost, avec Rails 2.3.2 et Ruby 1.8.6. Le fichier development.log montre qu'il a "envoyé" l'email sans erreur, mais l'email n'est pas reçu. J'ai essayé plusieurs adresses e-mail pour l'envoi et la réception et j'ai essayé plusieurs configurations et plugins, mais je n'arrive pas à envoyer l'e-mail. Toute aide serait très appréciée - j'ai l'impression de danser autour d'un tas de versions de solutions pour différentes versions de rails et de rubis et je ne peux pas l'abattre. J'apprécierais beaucoup les commentaires. Merci!courriels actionmailer "envoyés" dans development.log, mais pas reçu

Plugins:

  • l'action mailer tls en option
  • smtp_tls

différents email configs:

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

Vérifiez si ceux-ci sont en cours marqués comme spam. – Waseem

+0

Non. Pas de spam. – user117046

+0

Merci les gars, pas sûr de ce qui est arrivé (peut-être quelque chose avec le serveur SMTP), mais il fonctionne aujourd'hui avec le même code exact. guh. – user117046

Répondre

8

Vous devez utiliser true et non :true.

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

Vous ne savez pas, mais sont-ils interchangeables? J'ai également essayé d'utiliser "true" au lieu de ": true". – user117046

+2

Ils peuvent être interchangeables, car la bibliothèque vérifie probablement s'ils ne sont pas «nuls» et non «faux». – henrikhodne

4

Au cas où quelqu'un fait face à ce problème, définissez « config.action_mailer.raise_delivery_errors = true » dans development.rb dans votre environnement dossier et essayez d'envoyer du courrier de nouveau. Cela devrait augmenter toute erreur rencontrée.

Parfois, dans la ligne 8 de smtp_tls.rb, la méthode check_auth_args n'accepte que 2 arguments: user et secret. Supprimez l'argument 'authtype' si vous le voyez et réessayez. Devrait marcher.

+0

Bon conseil! A noter également que si vous spécifiez certaines parties de votre config ailleurs, ex. En utilisant [dotenv] (https://github.com/bkeepers/dotenv), que je vous recommande vivement, assurez-vous d'inclure toutes les valeurs pouvant contenir des caractères spéciaux entre guillemets simples. – schmielson

12

Mettez ce qui suit dans config/environments/development.rb

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

Il remplacera les paramètres config/environment.rb

également pour rails 2.X dont vous aurez besoin pour configurer:

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

Merci pour le conseil à propos de 'raise_delivery_errors = true'.Cela m'a aidé à me rapprocher de l'identification de l'erreur, à savoir que je n'avais mis que la partie "** nom **" dans la valeur de "nom_utilisateur", et non l'adresse e-mail complète "** [email protected]". . Après avoir mis l'adresse email complète, l'email envoyé! Note: Je n'ai * pas * besoin de mettre 'perform_deliveries = true'. Et je cours Rails 3.1.0 en ce moment. – user664833

+0

Donc, j'ai exactement le même problème. Non ce n'est pas dans le spam, oui les messages confirmés envoyés, et oui j'ai aussi des erreurs de livraison et d'effectuer des livraisons réglées sur true. Avons-nous décidé que cela a finalement fonctionné comme par magie? Pas de réponse claire ici ... – fresh5447