web-dev-qa-db-fra.com

gmail smtp avec Rails 3

J'essaie d'obtenir un e-mail de confirmation en utilisant un compte gmail. J'ai regardé autour de moi et rien n'est évident. Il n'y a aucune erreur ou quoi que ce soit, il n'envoie tout simplement pas

J'ai ceci comme initaliseur:

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            => "<address>@gmail.com",
  :password             => "<password>",
  :authentication       => "plain",
  :enable_starttls_auto => true
}

ActionMailer::Base.default_url_options[:Host] = "localhost:3000"
28
elasticmonkey

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

Ce 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            => '<username>',
  :password             => '<password>',
  :authentication       => 'plain',
  :enable_starttls_auto => true  }

Du tout-puissant-guide configuration ActionMailer pour gmail

64
brutuscat

ajouter tlsmail au gemfile

gem 'tlsmail'

courir :

bundle install

ajoutez ces paramètres au fichier config/envirnoments/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 => "<addreee>@gmail.com",
          :password => "<password>"
      }

    config.action_mailer.raise_delivery_errors = true
8

Vous devez vérifier que [email protected] 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 vrac finit par ne pas envoyer du tout.

Je vous suggère de vous connecter à [email protected] et de vérifier qu'il n'y a pas de problème et que les e-mails sont envoyés.

Sinon, vous pouvez essayer un service comme Send Grid pour envoyer des e-mails sortants.

Alternativement, vous pouvez regarder dans votre serveur. Ou si vous êtes en développement, jetez un œil à log/development.log. Je suis à peu près sûr que vous pouvez voir dans vos journaux qu'il essaie réellement d'envoyer le courrier.

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

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

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

Le <username> signifie saisir votre vrai nom d'utilisateur? Le <password>

0
jsvisa