¿Cuál sería la mejor manera de ir sobre la fabricación de ActionMailer enviar correo a través de Amazon SES en Rails 3?

Edición:

Ahora es una joya:

gem install amazon-ses-mailer

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

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

  • En caso de que alguien sigue visitando esta respuesta, por encima de la joya tiene el certificado de verificación de problemas con SSL en JRuby (tal vez fuera de JRuby así), que puede ser fijo como por la modificación de la joya así: martinottenwaelter.fr/2010/12/ruby19-and-the-ssl-error
  • ¿por qué es «oficial»?
InformationsquelleAutor AdamB | 2011-01-25

10 Comentarios

  1. 31

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

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

    También tiene todas las API para la verificación de la gestión de las direcciones de correo electrónico

    • No funciona ahora. He excepción: SignatureDoesNotMatch
    • He creado una nueva joya uso de la Firma V4. Es básico SES de la API de correo electrónico transaccional integrado con rails. github.com/cickes/ses_api-rails
  2. 78

    La configuración de Rails 3.2 para el envío de mensajes a través de Amazon Simple Email Service (SES) es muy fácil. Que no requieren de la gema o mono parche para hacerlo funcionar.

    SES soporta tanto STARTTLS a través de SMTP, así como SSL/TLS. La siguiente muestra cómo instalar Rails para STARTTLS con SES.

    Requisitos previos

    1. Si está ejecutando rieles de Mac OS X, puede que necesite configurar OpenSSL para Ruby correctamente antes de poder usar STARTTLS. Si usted está usando Ruby 1.9.3 y RVM, aquí es una manera de hacer esto:

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

    Si no haces esto, hay una posibilidad de que Ruby violación de segmento cuando intenta enviar un correo electrónico.

    1. Asegúrese de que haya verificado su dirección de correo del remitente con AWS. Sólo puede enviar mensajes de correo electrónico con una dirección de correo verificada como el remitente. Vaya a la «Verificado los Remitentes» opción en el menú de la izquierda en la consola de AWS para SES.

    2. Asegúrese de que usted tiene la AWS SMTP nombre de usuario y la contraseña para la autenticación. Ir a la «Configuración de SMTP» opción en el menú de la izquierda en la consola de AWS para SES para configurar esto. Primero se le pedirá que cree un usuario de IAM (por defecto: ses-smtp-usuario) y, a continuación, se le mostrará el SMTP de usuario y contraseña, que parecen como de costumbre AWS clave y el secreto. Tenga en cuenta que el usuario de IAM, es decir, ses-smtp-usuario es no el usuario de SMTP que se va a utilizar para la autenticación.

    La Configuración De Rieles

    En config/environments/desarrollo.rb y config/environments/producción.rb, agregue el 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
      }

    El envío de un correo electrónico

    Esto es. Ahora usted puede seguir adelante y crear un correo y empezar a enviar correos electrónicos para la diversión y el beneficio!

    Crear un ejemplo de mailer

    rails g mailer user_mailer

    En app/correo/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 

    Vistas/user_mailer/prueba.erb:

        A quick brown fox jumped over the lazy dog.

    Ahora, el lanzamiento de la consola y disparar un correo electrónico de prueba:

        rails c
    
        Loading development environment (Rails 3.2.1)
        1.9.3p125 :001 > UserMailer.test("[email protected]").deliver
    • Tengo que especificar el :domain parámetro en smtp_settings para conseguir que esto funcione. Parece que no importa lo que quería, así que me he ido para example.com por ahora. Gracias!
    • Estoy usando Rails 3.2.10 y yo no tiene que especificar :parámetro de dominio.
    • Yo debería haber mencionado que esta aplicación es el uso de la 2.3.x rama de rieles.
    • Gracias por el tutorial completo, Sir @SujoyGupta.
    • Gracias ayudó a cargas; una cosa pesar de que yo tenía que dar return_path defecto en el UserMailer demasiado.
    • Tutoriales como estos son los salvadores.
    • dónde poner el access_keys ?
    • he intentado la solución, pero podría enviar correo electrónico. terminó con el error de tiempo de espera
    • Ahora estoy usando Rails 4.2.1 y todo lo que todavía funciona. La única diferencia es que, he añadido una entrada explícita para usar el puerto 587 en lugar de 25. Por favor, vuelva a comprobar de que usted está siguiendo las instrucciones y AWS SES está configurado correctamente.
    • Gupta, he intentado cambiando el puerto 587 pero no hubo suerte.
    • Voy a empezar por verificar la AWS SES de configuración, asegurándose de que todos los valores de configuración de smtp es correcta y, a continuación, el uso de algunos locales como Charles proxy para ver exactamente qué es la horca. Buena suerte con la investigación.
    • Estoy teniendo el mismo problema (en mi entorno dev uso de Cloud9). Necesito configurar Cloud9 como una verificado el dominio del remitente en AWS SES (no parece posible ya que no tengo el control de este DNS), o debe ser suficiente para establecer verificado correos electrónicos? Si el último, cualquier otra idea?
    • Me gustaría probar la conexión a la SES extremo directamente y ver si funciona de su entorno. A continuación, me gustaría buscar la ayuda de AWS support.

  3. 9

    Después de hurgar un poco acabé haciendo una sencilla clase para hacer esto.

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

    En rails, usted puede conseguir el codificado mensaje de correo electrónico:

    m = UserMailer.welcome.encoded
    AmazonSES.new.deliver(m)
    • Gracias por este. Es raro, provocar que el primer par de veces he intentado esto que no codifican el cuerpo correctamente por lo que envió un correo electrónico sin ningún tipo de contenido. Por una razón desconocida, cuando lo probé, más tarde se hizo el trabajo. Independientemente, esta solución funcionó para mí, es bueno saberlo! Amazon SES es una muy buena opción para el envío de correos electrónicos y es muy barato. Yo creo que tiene menos funciones que, por ejemplo, SendGrid, pero si no tienen necesidad particular de ellos, esto parece el camino a seguir si quieres algo muy asequible. Y se acaba de publicar y es sólo en la beta ahora mismo. 🙂
  4. 7

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

    Usted no necesita joya para esta cosa.

    smtp es defualt la forma de envío de correo electrónico en rails, pero usted puede añadir esta línea a definir de forma explícita en config/de la aplicación.rb archivo

    config.action_mailer.delivery_method = :smtp

    En config/de la aplicación.rb o puede especificar en ciertos 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
    }

    La Amazon SES SMTP nombre de host es específico para cada región, por lo que el nombre que usted está en, los siguientes son los nombres de host wrt regiones.

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

    StackOverFlow |
    Amazon-getting-started-enviar-el uso de smtp

  5. 3

    La configuración de tu aplicación Rails con Amazon SES

    conjunto action_mailer.perform_deliveries a cierto como se establece en false de forma predeterminada en el desarrollo de la producción, y de medio ambiente

    config.action_mailer.perform_deliveries = true

    a continuación, pegue este código en su desarrollo/entorno de 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
    }
  6. 0

    He creado un simple Rails /SES API joya que utiliza la Firma de la v4 a la firma de la solicitud. Esta es la mejor opción para los emails transaccionales, tales como contacto con nosotros, registro de usuarios, etc.

    Rieles de SES integración de la API de gema

    Por favor, siéntase libre para mejorar la & contribuir.

  7. -1

    SES sólo fue lanzado en beta el día de hoy, así que dudo que no es un ready-to-go joya (al menos, no que yo he visto). Podría escribir un módulo personalizado basado en su desarrollador documentos:

    http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/
    • Sé que es muy temprano para estar haciendo esta pregunta. Lo principal es que me gustaría usar la codificación MIME mensaje de rieles genera a través de su programa de correo.
  8. -1

    utilizando :sendmail, me las arreglé para conseguir todos los correos electrónicos para enviar ejecución apt-get install postfix como root en mi AWS máquina y el uso de todas las respuestas por defecto.

  9. -2

    Puede proporcionar el método de entrega para la acción mailer en su entorno.

    config.action_mailer.delivery_method = AmazonSES.deliver

    Por ahora está probablemente en su propia escritura, el código de entrega.

Dejar respuesta

Please enter your comment!
Please enter your name here