28 votes

Gmail smtp avec rails 3

Je essaie d'obtenir l'envoi d'un e-mail de confirmation en utilisant un compte gmail. J'ai regardé autour et il n'y a rien d'évident. Il n'y a pas d'erreurs ou quoi que ce soit, ça ne s'envoie tout simplement pas

J'ai ceci comme initialiseur :

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true

ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => "gmail.com",
  :user_name            => "@gmail.com",
  :password             => "",
  :authentication       => "plain",
  :enable_starttls_auto => true
}

ActionMailer::Base.default_url_options[:host] = "localhost:3000"

63voto

brutuscat Points 1912

Vous n'avez plus besoin de la gem tlsmail au moins avec Rails 3.2

Cela sera suffisant

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => 'baci.lindsaar.net',
  :user_name            => '',
  :password             => '',
  :authentication       => 'plain',
  :enable_starttls_auto => true  }

Depuis le guide tout-puissant Configuration d'ActionMailer pour gmail

8voto

Muhammad Sannan Points 2541

Ajouter tlsmail au fichier Gemfile

gem 'tlsmail'

exécuter :

bundle install

ajouter ces paramètres au fichier config/environments/development.rb

YourApplicationName::Application.configure do
    require 'tlsmail'
      Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
      ActionMailer::Base.delivery_method = :smtp
      ActionMailer::Base.perform_deliveries = true
      ActionMailer::Base.raise_delivery_errors = true
      ActionMailer::Base.smtp_settings = {
          :address => "smtp.gmail.com",
          :port => "587",
          :domain => "gmail.com",
          :enable_starttls_auto => true,
          :authentication => :login,
          :user_name => "@gmail.com",
          :password => ""
      }

    config.action_mailer.raise_delivery_errors = true

5voto

Christian Fazzini Points 7446

Vous devriez vérifier que my_user_name@gmail.com a bien envoyé l'e-mail. Nous avons eu des problèmes avec cela dans le passé lors de l'envoi d'e-mails de vérification via le serveur SMTP de Gmail, car l'envoi en masse finissait par ne pas partir du tout.

Je vous suggère de vous connecter à my_user_name@gmail.com et de vérifier s'il n'y a pas de problèmes et que les e-mails sont bien envoyés.

Si ce n'est pas le cas, vous pouvez essayer un service comme Send Grid pour envoyer des e-mails sortants.

Alternativement, vous pouvez vérifier votre serveur. Ou si vous êtes en développement, jetez un œil à log/development.log. Je suis presque certain que vous pouvez voir dans vos journaux qu'il essaie effectivement d'envoyer le courrier.

Le problème est que Google ne fait pas confiance à votre adresse IP locale et vos e-mails ne seront pas livrés (même pas dans le dossier spam). Il n'y a pas moyen de contourner cela en utilisant un serveur autorisé.

Vous pouvez essayer cela en déployant votre application sur un serveur de production comme Heroku et en testant à partir de là.

0voto

jsvisa Points 171
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => 'baci.lindsaar.net',
  :user_name            => '',
  :password             => '',
  :authentication       => 'plain',
  :enable_starttls_auto => true  }

Le signifie de remplir avec votre nom d'utilisateur réel ? Alors que le

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X