Come si creano e si inviano e-mail dall'applicazione Rails, che contengono immagini e una formattazione corretta? come quelli che ricevi da facebook e simili.Come posso creare e-mail con css e immagini da Rails?
risposta
Supponendo che tu sappia come inviare normali messaggi di testo in chiaro da Rails utilizzando ActionMailer, per ottenere email HTML
che funzionano è necessario impostare un tipo di contenuto per la tua e-mail.
Ad esempio, il Notifer potrebbe assomigliare a questo:
class MyMailer < ActionMailer::Base
def signup_notification(recipient)
recipients recipient.email_address_with_name
subject "New account information"
from "[email protected]"
body :user => recipient
content_type "text/html"
end
end
Nota la linea content_type "text/html"
. Ciò indica ad ActionMailer di inviare un messaggio di posta elettronica con un tipo di contenuto di text/html
anziché il valore predefinito text/plain
.
Quindi è necessario rendere l'output delle viste del proprio mailer HTML
. Ad esempio, il file di vista app/views/my_mailer/signup_notification.html.erb
potrebbe essere simile alla 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 si può vedere la vista HTML
può includere un tag <style>
per definire stili di base. Non tutti gli HTML
e CSS
sono supportati, in particolare su tutti i client di posta, ma è necessario disporre di un controllo di formattazione sufficiente rispetto agli stili di testo.
L'incorporamento di immagini è un po 'più complicato se si prevede di visualizzare le e-mail allegate. Se si includono semplicemente e-mail da siti esterni, è possibile utilizzare un tag <img />
come si farebbe di solito in HTML
. Tuttavia, molti client di posta bloccheranno la visualizzazione di queste immagini finché l'utente non la autorizza. Se hai bisogno di visualizzare immagini allegate, il plug-in Rails Inline Attachments potrebbe valere la pena dare un'occhiata.
Per ulteriori informazioni sulla mailing supporto Rails, il ActionMailer documentation è una grande risorsa
Solo una nota: Gmail ** non supporterà ** CSS esterni. Se vuoi che i CSS vengano visualizzati correttamente in Gmail devi usare gli stili in linea come '
Puoi allineare automaticamente gli stili usando Roadie: https://github.com/Mange/roadie –
La gemma di Premailer è anche molto bella per l'inlining gli stili. C'è anche una gemma chiamata inline_css che usa Premailer per renderlo super facile da usare nei modelli di email/layout. – scottwb
Leggi How to Create Great HTML Emails with CSS, è un buon inizio. Tutte le email devono seguire HTML 3.0!
Per le immagini si può semplicemente utilizzare il normale image_tag
aiutante dopo aver definito il ActionMailer::Base.asset_host = 'http://www.your-domain.com'
Io uso Paperclip per memorizzare le mie immagini quindi nel mio caso posso aggiungere un'immagine a un'email usando questo.
image_tag result.photo.url(:small)
Questo è 'config.action_mailer.asset_host' ora – elsurudo
- 1. Come posso creare CSS dinamico in Rails?
- 2. Come creare video da immagini con php?
- 3. JS, Immagini e CSS intercettati da HTTPModule
- 4. creare un'immagine da css
- 5. come creare questo forma con solo div e css
- 6. Incorporamento di immagini alle email
- 7. Come posso fare riferimento alle immagini di sfondo CSS in produzione in Rails 4.0?
- 8. Come creare un video da immagini con FFmpeg?
- 9. Come posso creare un float in alto con i CSS?
- 10. Come posso creare un Floating Button usando jQuery e CSS?
- 11. Rails nested forms con immagini
- 12. Come posso creare un film da un insieme di immagini usando qtj e java?
- 13. In Rails quando usi la gemma Devise come creare un utente senza email e password?
- 14. Come posso creare un film con codifica H.264 da un insieme di immagini in C#?
- 15. Rails invia un email di linea?
- 16. @ Html.EditorFor Come creare attributo type = "email"
- 17. Come selezionare l'etichetta per = "email" nei CSS?
- 18. Come creare questo layout con i CSS?
- 19. Come posso creare un pignone rotante con CSS3 e jQuery?
- 20. CSS Sprites Ripetizione immagini
- 21. Come creare categorie in Rails
- 22. Tipo MIME per soddisfare HTML, email, immagini e testo normale?
- 23. Come posso creare una galleria di immagini in Drupal 7?
- 24. iphone uiwebview scarica la pagina completa con CSS e immagini
- 25. precarica immagini CSS nascoste
- 26. CSS, JS e immagini non vengono visualizzate con abbastanza url
- 27. precaricare le immagini con immagini di sfondo css?
- 28. Email HTML in Gmail - incorporamento di immagini
- 29. CSS e immagini sulla pagina principale
- 30. Email open notifica - Ruby on Rails
La mia risposta risponde alla tua domanda? –
@bjeanes - Non ho davvero avuto il tempo di provarlo mentre mi sono occupato con qualcos'altro, ma sembra che la soluzione sia sulla linea giusta. Grazie. Cercherò di aggiornare. – Akshay