Pregunta

¿Cómo se crean y envían correos electrónicos desde la aplicación Rails, que contienen imágenes y el formato adecuado?dale me gusta a los que obtienes de facebook y dale me gusta.

¿Fue útil?

Solución

Suponiendo que sepa cómo enviar correos electrónicos normales de texto sin formato desde Rails usando ActionMailer, para obtener HTML Los correos electrónicos funcionan, necesita establecer un tipo de contenido para su correo electrónico.

Por ejemplo, su notificador podría verse así:

class MyMailer < ActionMailer::Base
  def signup_notification(recipient)
    recipients   recipient.email_address_with_name
    subject      "New account information"
    from         "system@example.com"
    body         :user => recipient
    content_type "text/html"
  end
end

Nota la content_type "text/html" línea.Esto le indica a ActionMailer que envíe un correo electrónico con un tipo de contenido de text/html en lugar del valor predeterminado text/plain.

Lo siguiente que tienes que hacer es generar las vistas de tu correo. HTML.Por ejemplo, su archivo de vista app/views/my_mailer/signup_notification.html.erb podría parecerse a lo siguiente:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style type="text/css" media="screen">
      h3 { color: #f00; }
      ul { list-style: none; }
    </style>
</head>
<body>
  <h3>Your account signup details are below</h3>
  <ul>
    <li>Name: <%= @user.name %></li>
    <li>Login: <%= @user.login %></li>
    <li>E-mail: <%= @user.email_address %></li>
  </ul>
</body>
</html>

Como puedes ver el HTML La vista puede incluir una <style> etiqueta para definir estilos básicos.No todo HTML y CSS es compatible, especialmente en todos los clientes de correo, pero definitivamente deberías tener suficiente control de formato sobre los estilos de texto.

Incrustar imágenes es un poco complicado si planeas mostrar correos electrónicos adjuntos.Si simplemente incluye correos electrónicos de sitios externos, puede utilizar un <img /> etiquetar como lo haría normalmente en HTML.Sin embargo, muchos clientes de correo bloquearán la visualización de estas imágenes hasta que el usuario lo autorice.Si necesita mostrar imágenes adjuntas, el complemento Rails Archivos adjuntos en línea podría valer la pena echarle un vistazo.

Para obtener más información sobre el soporte de correo de Rails, el Documentación de ActionMailer es un gran recurso

Otros consejos

Para las imágenes, puede usar el ayudante image_tag normal después de haber definido el ActionMailer::Base.asset_host = 'http://www.your-domain.com'

Utilizo Paperclip para almacenar mis imágenes, así que en mi caso puedo agregar una imagen a un correo electrónico usando esto.

image_tag result.photo.url(:small)

Lea Cómo crear excelentes correos electrónicos HTML con CSS , es un buen comienzo. ¡Todos los correos electrónicos deben seguir HTML 3.0!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top