39 votes

Utilisation d'Amazon SES avec Rails ActionMailer

Quelle serait la meilleure façon de faire en sorte qu'ActionMailer envoie du courrier via Amazon SES dans Rails 3?

Éditer:

C'est maintenant un joyau:

 gem install amazon-ses-mailer
 

https://rubygems.org/gems/amazon-ses-mailer

https://github.com/abronte/Amazon-SES-Mailer

82voto

Sujoy Gupta Points 981

La configuration de Rails 3.2 pour l'envoi d'e-mails à l'aide d'Amazon Simple Email Service (SES) est facile. Vous n'avez pas besoin d'aucun autre bijou ou monkey patching pour le faire fonctionner.

SES prend en charge à la fois STARTTLS sur SMTP ainsi que le protocole TLS/SSL. La liste suivante montre comment mettre en place des Rails pour STARTTLS avec SES.

Conditions préalables

  1. Si vous exécutez des rails de Mac OS X, vous devrez peut-être configurer OpenSSL pour Ruby correctement avant de vous pouvez utiliser STARTTLS. Si vous êtes à l'aide de Ruby 1.9.3 et RVM, ici, c'est une manière de faire ceci:

    rvm pkg install openssl
    rvm reinstall 1.9.3 --with-openssl-dir=$rvm_path/usr 
    

Si vous ne le faites pas, il y a une possibilité que Ruby permettra d'erreur lorsque vous essayez d'envoyer un e-mail.

  1. Assurez-vous que vous avez vérifié votre adresse email de l'expéditeur avec AWS. Vous ne pouvez envoyer des e-mails avec une adresse courriel valide en tant qu'expéditeur. Aller à la "Vérifié les Expéditeurs" option dans le menu de gauche dans la console AWS pour SES.

  2. Assurez-vous que vous avez AWS SMTP nom d'utilisateur et le mot de passe pour l'authentification. Allez à "Paramètres SMTP" option dans le menu de gauche dans la console AWS pour SES pour cette série. Vous serez invité à en créer un utilisateur IAM (par défaut: ses-smtp de l'utilisateur) et puis vous verrez le SMTP de l'utilisateur et le mot de passe, qui ressemblent à d'habitude AWS clé et le secret. Notez que l'utilisateur IAM, c'est à dire, ses-smtp de l'utilisateur n'est pas le SMTP de l'utilisateur que vous allez utiliser pour l'authentification.

La Configuration Des Rails

Dans config/développement.rb et config/production.rb, ajoutez la ligne suivante:

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
      :address => "email-smtp.us-east-1.amazonaws.com",
      :user_name => "...", # Your SMTP user here.
      :password => "...", # Your SMTP password here.
      :authentication => :login,
      :enable_starttls_auto => true
  }

L'envoi d'un e-mail

Ce qu'il est. Maintenant, vous pouvez aller de l'avant et de créer un mailer et commencer à envoyer des e-mails pour le plaisir et le profit!

Créer un exemple de mailer

rails g mailer user_mailer

Dans app/mailer/user_mailer.rb:

    class UserMailer < ActionMailer::Base
      # Make sure to set this to your verified sender!
      default from: "your@verifiedsender.com"  

      def test(email)
        mail(:to => email, :subject => "Hello World!")
      end
    end 

Dans les vues/user_mailer/test.erb:

    A quick brown fox jumped over the lazy dog.

Maintenant, lancez la console et de tirer un e-mail de test:

    rails c

    Loading development environment (Rails 3.2.1)
    1.9.3p125 :001 > UserMailer.test("your@email.com").deliver

31voto

Drew Blas Points 1473

J'ai également un petit bijou qui prend en charge l'envoi d'e-mails via SES à partir de Rails 3:

https://github.com/drewblas/aws-ses

Il possède également toutes les API pour vérifier / gérer les adresses e-mail

9voto

AdamB Points 1232

Après avoir fouillé un peu, j'ai fini par faire une classe simple pour le faire.

https://github.com/abronte/Amazon-SES-Mailer

Dans les rails, vous pouvez obtenir le message électronique codé:

 m = UserMailer.welcome.encoded
AmazonSES.new.deliver(m)
 

-1voto

Edmund Points 2792

en utilisant :sendmail , j'ai réussi à obtenir tous les e-mails à envoyer en cours d'exécution apt-get install postfix tant que root sur ma machine AWS et en utilisant toutes les réponses par défaut.

-1voto

jschorr Points 2357

SES vient d'être publié en version bêta aujourd'hui, donc je doute qu'il existe un joyau prêt à l'emploi (du moins, pas que j'ai vu). Vous pouvez écrire un module personnalisé basé sur leurs documents de développeur:

 http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/
 

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