Que aprenderemos:
- Introducción a Action Mailer
- Crear un Action Mailer
- Vista previa de Action Mailer
- Configuración
- Integrar con SendGrid
- Conclusión

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:
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í:

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.
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
- Crea una cuenta en Sendgrid .
- Vaya a Configuración en la barra de navegación izquierda y luego seleccione Claves API .
- Haga clic en Crear clave API .
- Dale un nombre a tu clave de API.
- 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.
- Haga clic en Crear y ver

Actualizar la clave API a la configuración de Producción
- nombre_usuario: SENDGRID_NAME_KEY
- contraseña: SENDGRID_API_KEY
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.
0 Comentarios
Dejanos tu comentario para seguir mejorando!