Envoi de mail avec Rails 3, dans un environnement de développement
Je suis sûr que cela a été demandé à un million de fois avant, mais je ne peux pas trouver quelque chose qui fonctionne pour moi si je suis en demandant de nouveau!
J'ai juste besoin d'un moyen d'envoyer des e-mails à l'aide de ActionMailer dans rails 3. J'ai suivi de nombreux tutoriels, y compris la Railscasts tutoriel sur la nouvelle ActionMailer et je peux voir les mails générés, mais je ne les recevrez pas.
J'ai essayé un tas de manières différentes, mais ils ont généralement une quantité de configurer les paramètres suivants
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => "587",
:domain => "gmail.com",
:user_name => "[email protected]",
:password => "yyy",
:authentication => "plain",
:enable_starttls_auto => true
}
J'ai essayé le code ci-dessus (en cours de validité avec gmail détails bien sûr) dans ma config/environment.rb, config/environments/développement.rb et actuellement dans sa propre initialiser config/initialisers/setup_mail.rb
J'ai aussi essayé avec un peu différents serveurs smtp, y compris Gmail et Sendgrid, en ajustant les paramètres smtp en conséquence mais toujours rien. Je peux voir les messages dans le terminal et le log de développement, et c'est tout.
Personne ne sait de toute autre gotcha que j'ai peut-être raté qui doivent être en place pour ActionMailer de travail? À défaut, est-il un moyen d'obtenir plus d'information au sujet de pourquoi les mails ne sont pas envoyés? J'ai
config.action_mailer.raise_delivery_errors = true
mis dans ma config/développement.rb mais le log de développement, toujours en montre juste la même chose que je vois dans le terminal.
Pour ce que ça vaut, je suis sur un Ubuntu 10.04 ordinateur portable, juste au cas où il n'y a aucune installation spécifique nécessaire pour cela.
Merci beaucoup
- Pouvez-vous essayez de supprimer :domaine de l'paramètres ou modifier de quelque autre domaine.
Vous devez vous connecter pour publier un commentaire.
Eh bien, j'ai résolu le problème, mais tout à fait pourquoi cela fonctionne et les autres méthodes n'ont pas, je ne sais pas.
La solution était de créer une initialiser dans config/initialisers/setup_mail.rb contenant les éléments suivants
J'ai ensuite ajouté config/e-mail.yml contenant les détails de la dev et de la production des comptes de courriel
Comme je l'ai dit, aucune idée de pourquoi, mais cela semblait faire l'affaire. Merci à tous pour les pointeurs
J'ai de la suite dans
config/environments/development.rb
Le message de configuration,
config.actionmailer.*
j'ai placé dansconfig\application.rb
.Espère que cela aide 🙂
perform_deliveries
avez - vous aussi besoin de redémarrer le serveur.Essayer d'utiliser 'sendmail' au lieu de 'smtp'.
Trois choses.
Tout d'abord, le port est un entier et n'a pas besoin de guillemets, comme dans votre premier exemple. (Mais je pense qu'une chaîne doit encore travailler.)
Deuxième, n'oubliez pas de redémarrer votre serveur à chaque fois que vous modifiez ce (ou tout) initializer. Cela pourrait expliquer pourquoi vous ne voyez pas un message d'erreur après l'ajout:
config.action_mailer.raise_delivery_errors = true
Sans avoir ce message d'erreur, il est difficile de déterminer pourquoi le mail n'allait pas, mais ne l'est maintenant. Une possibilité est l'utilisation de guillemets autour du mot de passe. Si vous utilisez un mot de passe fort et avait un jeton dans votre mot de passe qui n'a pas échappé à il pourrait avoir été réinterprété. (c'est à dire
"P@ssw\0rd"
deviendraitP@ssrd
). Pour cette raison, j'ai toujours utiliser des guillemets simples dans mon code, à moins que j'ai précisément besoin du sucre syntaxique.Enfin,
enable_starttls_auto: true
est la valeur par défaut et inutile.Vient de mettre toutes les config pour:
config/environments/développement.rb
Je veux dire
et
Il a travaillé pour moi.
ActionMailer::Base.delivery_method = :sendmail
et
config.action_mailer.perform_deliveries = true
étaient les deux étapes nécessaires qui m'a plus ce problème
En plus, votre nom d'utilisateur gmail n'a pas d'alias.
Ref: https://support.google.com/mail/answer/12096?hl=en
Mes deux centimes de la valeur:
J'ai eu la même symptômes avec des Rails 5.1: Rien ne s'est passé, les paramètres de mon
development.rb
fichier ont été totalement ignorés...Puis je me suis souvenu de redémarrer la machine! (qui magiquement résolu le problème)
Cela a été souligné par quelques commentaires précédents.
La question est difficile, cependant, parce que vous ne vous attendez pas à ce comportement. De mon point de vue, les commentaires par défaut dans
development.rb
sont, à cet égard, trompeuse: