Domanda

Come si creano e si inviano e-mail dall'applicazione Rails, che contengono immagini e una formattazione corretta? come quelli che ottieni da Facebook e mi piace.

È stato utile?

Soluzione

Supponendo che tu sappia come inviare normali e-mail di testo normale da Rails utilizzando ActionMailer, per far funzionare HTML le email devi impostare un tipo di contenuto per la tua email.

Ad esempio, il tuo notifer potrebbe apparire così:

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 riga content_type "text/html". Questo indica ad ActionMailer di inviare un'e-mail con un tipo di contenuto text/html anziché il predefinito text/plain.

Successivamente devi rendere le tue visualizzazioni del mailer in uscita app/views/my_mailer/signup_notification.html.erb. Ad esempio, il file di visualizzazione <style> potrebbe essere simile al seguente:

<!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>

Come puoi vedere, la vista CSS può includere un tag <img /> per definire gli stili di base. Non tutti i <=> e <=> sono supportati, specialmente su tutti i client di posta, ma dovresti avere un controllo di formattazione sufficiente sugli stili di testo.

Incorporare le immagini è un po 'più complicato se si prevede di visualizzare e-mail allegate. Se stai semplicemente includendo e-mail da siti esterni, puoi utilizzare un tag <=> come faresti normalmente in <=>. Tuttavia, molti client di posta bloccano la visualizzazione di queste immagini fino a quando l'utente non le autorizza. Se devi visualizzare immagini allegate, il plug-in Rails Allegati incorporati potrebbe valere la pena dare un'occhiata .

Per ulteriori informazioni sul supporto di mailing di Rails, la Documentazione di ActionMailer è un'ottima risorsa

Altri suggerimenti

Per le immagini puoi semplicemente usare il normale image_tag aiuto dopo aver definito ActionMailer::Base.asset_host = 'http://www.your-domain.com'

Uso Paperclip per archiviare le mie immagini, quindi nel mio caso posso aggiungere un'immagine a un'e-mail usando questo.

image_tag result.photo.url(:small)

Leggi Come creare grandi e-mail HTML con CSS , è un buon inizio. Tutte le email devono seguire HTML 3.0!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top