Pergunta

Como você criar e-mails de envio de aplicação Rails, que contêm imagens e formatação adequada? como os que você começa a partir de facebook e afins.

Foi útil?

Solução

Assumindo que você sabe como enviar e-mails de texto simples normais de Rails usando ActionMailer, para receber e-mails HTML funcionando, você precisará definir um tipo de conteúdo para o seu e-mail.

Por exemplo, seu notifer pode ter esta aparência:

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

Observe a linha content_type "text/html". Isto diz ActionMailer para enviar um e-mail com um tipo de conteúdo de text/html vez do text/plain padrão.

Em seguida, você tem que fazer sua vista mailer HTML saída. Por exemplo, seu arquivo app/views/my_mailer/signup_notification.html.erb vista pode parecer o seguinte:

<!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 você pode ver a vista HTML pode incluir uma tag <style> para definir estilos básicos. Nem todos HTML e CSS é suportado, especialmente em todos os clientes de email, mas você definitivamente deveria ter o controle formatação suficiente sobre estilos de texto.

Incorporação imagens é um pouco tricker se você pretende exibir e-mails anexados. Se você está simplesmente incluindo e-mails de sites externos, você pode usar um tag <img /> como você normalmente faria em HTML. No entanto, muitos clientes de correio irá bloquear essas imagens sejam exibidas até que o usuário autorize. Se você precisar exibir imagens anexadas, as Rails plug-in inline pode valer a pena um olhar .

Para obter mais informações sobre o suporte de correio Rails, a documentação ActionMailer é um grande recurso

Outras dicas

Para as imagens que você pode simplesmente usar o ajudante image_tag normal depois de ter definido o ActionMailer::Base.asset_host = 'http://www.your-domain.com'

Eu uso Paperclip para armazenar minhas imagens assim no meu caso eu posso adicionar uma imagem a um e-mail usando isso.

image_tag result.photo.url(:small)

Leia Como criar e-mails Grande HTML com CSS , é um bom começo. Todos os e-mails precisa seguir HTML 3.0!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top