Header Ads Widget

Ticker

6/recent/ticker-posts

Cómo enviar correo electrónico en la aplicación Rails

 

Que aprenderemos:

  • Introducción a Action Mailer
  • Crear un Action Mailer
  • Vista previa de Action Mailer
  • Configuración
  • Integrar con SendGrid
  • Conclusión

Foto de @campaign_creators en Unsplash

Introducción a Action Mailer

  • Action Mailer es un componente de Ruby on Rails que le permite enviar correos electrónicos desde su aplicación Rails.
  • Action Mailer funciona de manera similar a Controller, lo que significa que los Mailers tienen:
    • Acciones y vistas asociadas que aparecen en aplicaciones / vistas.
    • Variables de instancia a las que se puede acceder en vistas.
    • La capacidad de utilizar diseños y parciales.
    • La capacidad de acceder a un hash de params.

Crear un Action Mailer

Idea: Enviaremos un correo electrónico de bienvenida al suscriptor en Blog.

Generar un Action Mailer para el suscriptor
rieles generan suscriptor de correo
Ejecutando a través del precargador Spring en proceso 7586
      crear app / mailers / subscriber_mailer.rb
      invocar erb
      crear aplicación / vistas / subscriber_mailer
      invocar test_unit
      crear prueba / mailers / subscriber_mailer_test.rb
      crear prueba / mailers / previews / subscriber_mailer_preview.rb

Nos centramos en 2 archivos:
  • SubscriberMailer: app / mailers / subscriber_mailer.rb
  • SubscriberMailerPreview: test / mailers / previews / subscriber_mailer_preview.rb
SubscriberMailer se ve así:
clase SubscriberMailer <ApplicationMailer
 final

SubscriberMailerPreview :
esta es una vista previa de Action Mailer que permite obtener una vista previa de los correos en el navegador a través de una URL para reproducirlos. 
# Obtenga una vista previa de todos los correos electrónicos en http: // localhost: 3000 / rails / mailers / subscriber_mailer 
class SubscriberMailerPreview <ActionMailer :: Preview
 end

Eso significa que puede acceder a http: // localhost: 3000 / rails / mailers / subscriber_mailer para obtener una vista previa de los correos electrónicos en SubscriberMailer.


Cree un correo electrónico de bienvenida

Paso 1: agregue un método llamado welcome_email a SubscriberMailer como se muestra a continuación:
class SubscriberMailer <ApplicationMailer
   def welcome_email (suscriptor)
    @subscriber = suscriptor

    electrónico (
      de: 'Luan Nguyen < luan+nguyen@email.com >',
      a: @ subscriber.email,
      asunto: 'Bienvenido a FullstackRubyonRails.com'
    )
  fin
fin


Paso 2: crea una vista para welcome_email 
Cree un archivo llamado welcome_email.html.erb en app / views / subscriber_mailer / . 
Este es el contenido del correo electrónico, formateado en HTML como vistas en Controller:
# app / views / subscriber_mailer / welcome_email.html.erb
<p> Hola, <% = @ subscriber.name%> </p>
<p> ¡Gracias por suscribirse a nuestros boletines informativos! </p>
<br>
<p> Saludos, </p>
<p> Luan Nguyen </p>


Actualización en la vista previa de Subscriber Mailer

# Obtenga una vista previa de todos los correos electrónicos en http: // localhost: 3000 / rails / mailers / subscriber_mailer
class SubscriberMailerPreview <ActionMailer :: Preview
   def welcome_email
    subscriber = Subscriber.find_or_create_by (
      nombre: "Usuario", 
      correo electrónico: ' usuario@gmail.com '
    )
    SubscriberMailer.welcome_email (suscriptor)
  fin
fin

Acceda a http: // localhost: 3000 / rails / mailers / subscriber_mailer / welcome_email para obtener una vista previa del correo electrónico de welcome_email en el navegador. El correo electrónico se ve así:

Correo electrónico de bienvenida en SubscriberMailer



Llamando al Mailer

Si desea enviar correos electrónicos de inmediato, simplemente llame a deliver_now :
SubscriberMailer.welcome_email (suscriptor) .deliver_now

O use deliver_later cuando desee enviar correos electrónicos de forma asincrónica en el trabajo en segundo plano (trabajo activo)
SubscriberMailer.welcome_email (suscriptor) .deliver_later


Configuración de Action Mailer

  • En el entorno de desarrollo (config / environment / development.rb)
Usamos la gema letter_opener para probar el mailer en modo de desarrollo.
Letter Opener es una joya que ayuda a obtener una vista previa del correo electrónico en el navegador predeterminado en lugar de enviarlo.
config.action_mailer.default_url_options = {host: 'localhost', puerto: 3000}
config.action_mailer.delivery_method =: letter_opener
config.action_mailer.perform_deliveries = true

  • En el entorno de producción (config / environment / production.rb)
Nos integramos con Sendgrid SMTP API para enviar correos electrónicos a los usuarios.
config.action_mailer.default_url_options = {host: 'tu-dominio.com'}
config.action_mailer.delivery_method =: smtp
config.action_mailer.smtp_settings = {
  autenticación:: simple,
  dirección: 'smtp.sendgrid.net',
  puerto: 587,
  nombre_usuario: SENDGRID_NAME_KEY,
  contraseña: SENDGRID_API_KEY,
  dominio: 'tu-dominio.com'
}


Integración con Sendgrid SMTP API:

Creando una clave API en Sendgrid 
  1. Crea una cuenta en Sendgrid .
  2. Vaya a Configuración en la barra de navegación izquierda y luego seleccione Claves API .
  3. Haga clic en Crear clave API .
  4. Dale un nombre a tu clave de API.
  5. Seleccione Acceso completo , Acceso restringido o Acceso a facturación .
    • El acceso completo permite que la clave API acceda a los puntos finales GET, PATCH, PUT, DELETE y POST para todas las partes de su cuenta, excluyendo la facturación y la validación de direcciones de correo electrónico.
    • El acceso restringido personaliza los niveles de acceso para todas las partes de su cuenta, excluyendo la facturación y la validación de la dirección de correo electrónico.
    • El acceso a la facturación permite que la clave API acceda a los puntos finales de facturación de la cuenta.
  6. Haga clic en Crear y ver
Crear clave API en Sendgrid

Actualizar la clave API a la configuración de Producción
  • nombre_usuario: SENDGRID_NAME_KEY 
  • contraseña: SENDGRID_API_KEY  
Además, puede obtener más información sobre las claves API de Sendgrid en su documento .

Conclusión

En este artículo, lo guié sobre cómo enviar correos electrónicos desde su aplicación Rails a través de Action Mailer. Además, le presentamos Sendgrid, un servicio de entrega de correo electrónico y cómo integrarse con la API de Sendgrid para enviar correos electrónicos en producción.

Publicar un comentario

0 Comentarios