Come faccio a creare e-mail con CSS e immagini da Rails?
-
19-08-2019 - |
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.
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!