tutorial rails elastic docs aws ruby-on-rails ruby-on-rails-3 amazon-web-services

ruby on rails - elastic - Uso de Amazon SES con Rails ActionMailer



elastic beanstalk (10)

¿Cuál sería la mejor manera de hacer que ActionMailer envíe correo a través de Amazon SES en Rails 3?

Editar:

Esto ahora es una joya:

gem install amazon-ses-mailer

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

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


Configurando su aplicación Rails con Amazon SES

establezca action_mailer.perform_deliveries en true, ya que está configurado como false de forma predeterminada en el entorno de desarrollo / producción

config.action_mailer.perform_deliveries = true

luego pegue este código en su entorno de desarrollo / producción

config.action_mailer.smtp_settings = { :address => ENV["SES_SMTP_ADDRESS"], :port => 587, :user_name => ENV["SES_SMTP_USERNAME"], :password => ENV["SES_SMTP_PASSWORD"], :authentication => :login, :enable_starttls_auto => true }


Configurar Rails 3.2 para enviar correos electrónicos utilizando el Simple Email Service (SES) de Amazon es fácil. No necesita ningún parche adicional de gema o mono para que funcione.

SES admite tanto STARTTLS sobre SMTP como TLS / SSL. A continuación se muestra cómo configurar Rails para STARTTLS con SES.

Requisitos previos

  1. Si está utilizando Rails Mac OS X, es posible que necesite configurar OpenSSL para Ruby correctamente antes de poder usar STARTTLS. Si está utilizando Ruby 1.9.3 y RVM, aquí hay una forma de hacerlo:

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

Si no lo hace, existe la posibilidad de que Ruby segfault cuando intenta enviar un correo electrónico.

  1. Asegúrese de haber verificado la dirección de correo electrónico de su remitente con AWS. Solo puede enviar correos electrónicos con una dirección de correo electrónico verificada como remitente. Vaya a la opción "Remitentes verificados" en el menú de la izquierda en la consola de AWS para SES.

  2. Asegúrese de tener el nombre de usuario y contraseña de AWS SMTP para la autenticación. Vaya a la opción "Configuración de SMTP" en el menú de la izquierda en la consola de AWS para que SES lo configure. Primero se le pedirá que cree un usuario de IAM (predeterminado: ses-smtp-user) y luego se le mostrará el usuario SMTP y la contraseña, que se parecen a la clave y el secreto de AWS habitual. Tenga en cuenta que el usuario de IAM, es decir, ses-smtp-user no es el usuario SMTP que va a utilizar para la autenticación.

Configurando Rieles

En config / environments / development.rb y config / environments / production.rb, agregue lo siguiente:

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

Enviando un correo electrónico

Eso es todo. ¡Ahora puede seguir adelante y crear un anuncio publicitario y comenzar a enviar correos electrónicos para divertirse y obtener ganancias!

Crear un anuncio de muestra

rails g mailer user_mailer

En la aplicación / mailer / user_mailer.rb:

class UserMailer < ActionMailer::Base # Make sure to set this to your verified sender! default from: "[email protected]" def test(email) mail(:to => email, :subject => "Hello World!") end end

En views / user_mailer / test.erb:

A quick brown fox jumped over the lazy dog.

Ahora, inicia la consola y dispara un correo electrónico de prueba:

rails c Loading development environment (Rails 3.2.1) 1.9.3p125 :001 > UserMailer.test("[email protected]").deliver


Creé una gema sencilla Rails / SES API que usa Signature v4 para firmar la solicitud. Esto se usa mejor para correos electrónicos transaccionales como contactarnos, registrar usuarios, etc.

github.com/cickes/ses_api-rails

Por favor, siéntase libre de mejorar y contribuir.


Después de hurgar un poco, terminé haciendo una clase simple para hacer esto.

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

En los rieles, puede obtener el mensaje de correo electrónico codificado:

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


Puede proporcionar el método de envío a la aplicación de correo de acción en su entorno.

config.action_mailer.delivery_method = AmazonSES.deliver

Por ahora, es probable que usted mismo escriba el código de entrega.


SES acaba de ser lanzado en beta hoy, así que dudo que haya una gema lista para usar (al menos, no es que yo haya visto). Puede escribir un módulo personalizado en función de sus documentos de desarrollador:

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


También tengo una joya que admite el envío de correo electrónico a través de SES desde Rails 3:

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

También tiene toda la API para verificar / administrar las direcciones de correo electrónico


Yo uso la siguiente gema:

https://github.com/aws/aws-sdk-rails

Extrae el estándar aws-sdk , además permite establecer ActionMailer para usar AWS SES. Ejemplo:

# config/production.rb # ... config.action_mailer.delivery_method = :aws_sdk


usando :sendmail , logré obtener todos los correos electrónicos para enviarlos ejecutando apt-get install postfix como root en mi máquina AWS y usando todas las respuestas predeterminadas.


Para la configuración SSL de TLS [Recomendado por Amazon SES]

No necesitas joya para esto.

smtp es definitivamente la forma de enviar correos electrónicos en rieles, pero puede agregar esta línea para definir explícitamente en el archivo config / application.rb

config.action_mailer.delivery_method = :smtp

En config / application.rb o puede especificar en cierto archivo de entorno

config.action_mailer.smtp_settings = { address: ''Amazon SES SMTP HOSTNAME'', port: 465, #TLS port domain: ''example.com'', user_name: ''SMTP_USERNAME'', password: ''SMTP_PASSWORD'', authentication: ''plain'', #you can also use login ssl: true, #For TLS SSL connection }

El SMTP HOSTNAME de Amazon SES es específico para cada región, por lo que ese nombre en el que se encuentra, a continuación se encuentran los nombres de host wrt regions.

  1. email-smtp.us-east-1.amazonaws.com (para la región nosotros-este-1)
  2. email-smtp.us-west-2.amazonaws.com (para la región us-west-2)
  3. email-smtp.eu-west-1.amazonaws.com (para la región eu-west-1)

| Amazon-getting-started-send-using-smtp