Comment créer et envoyer des emails à partir de l'application Rails, qui contient des images et un formatage correct? comme ceux que vous obtenez de facebook et aimez.Comment créer un email avec css et des images de Rails?
Répondre
En supposant que vous sachiez comment envoyer des e-mails normaux en texte brut à partir de Rails à l'aide d'ActionMailer, vous devez définir un type de contenu pour vos e-mails afin que les e-mails HTML
fonctionnent.
Par exemple, votre notifer pourrait ressembler à ceci:
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
Notez la ligne content_type "text/html"
. Cela indique à ActionMailer d'envoyer un e-mail avec un type de contenu de text/html
au lieu de text/plain
par défaut.
Ensuite, vous devez afficher les vues de votre expéditeur en sortie HTML
. Par exemple, votre fichier de vue app/views/my_mailer/signup_notification.html.erb
pourrait ressembler à ce qui suit:
<!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>
Comme vous pouvez voir la vue HTML
peut inclure une balise <style>
pour définir des styles de base. Tous les HTML
et CSS
ne sont pas pris en charge, en particulier sur tous les clients de messagerie, mais vous devez avoir un contrôle de mise en forme suffisant sur les styles de texte.
L'incorporation d'images est un peu plus compliquée si vous prévoyez d'afficher des e-mails joints. Si vous incluez simplement des e-mails provenant de sites externes, vous pouvez utiliser une balise <img />
comme vous le feriez habituellement dans HTML
. Cependant, de nombreux clients de messagerie bloqueront l'affichage de ces images jusqu'à ce que l'utilisateur les autorise. Si vous avez besoin d'afficher des images jointes, le plug-in Rails Inline Attachments peut être intéressant.
Pour plus d'informations sur le support de diffusion Rails, le ActionMailer documentation est une excellente ressource
Juste une note: Gmail ** ne supportera pas ** CSS externe. Si vous souhaitez que CSS s'affiche correctement dans Gmail, vous devez utiliser des styles en ligne tels que '
Vous pouvez automatiquement intégrer les styles en utilisant Roadie: https://github.com/Mange/roadie –
La gemme Premailer est également très agréable pour l'inline les styles. Il y a aussi un bijou appelé inline_css qui utilise Premailer pour le rendre très facile à utiliser dans vos modèles/mises en page d'e-mails. – scottwb
Lisez How to Create Great HTML Emails with CSS, c'est un bon début. Tous les emails doivent suivre HTML 3.0!
Pour les images que vous pouvez simplement utiliser l'aide image_tag
normale après avoir défini le ActionMailer::Base.asset_host = 'http://www.your-domain.com'
J'utilise Paperclip pour stocker mes images Donc, dans mon cas, je peux ajouter une image à un email en utilisant cela.
image_tag result.photo.url(:small)
Ceci est 'config.action_mailer.asset_host' maintenant – elsurudo
- 1. CSS Pullquote avec des images
- 2. Rails horodatages sur les images en CSS
- 3. CSS on Email
- 4. App_offline.htm, CSS, images, et aspnet_isapi.dll
- 5. Facebook Créer un modèle One Line Story avec des images
- 6. Comment redimensionner et filigraner des images dans Ruby/Rails?
- 7. Créer des caractères étroits avec CSS
- 8. créer un menu avec CSS et overflow: auto
- 9. Utiliser @media dans CSS de HTML Email
- 10. Points d'interrogation après les images et fichiers js/css dans les rails. Pourquoi?
- 11. CSS Onglets sans bordures utilisant des images
- 12. Comment créer un popup modal en utilisant javascript et CSS
- 13. CSS et images sur Master Page
- 14. Comment créer un effet de réflexion avec des images bitmap dans Flex?
- 15. Comment envoyer un email avec PHP?
- 16. Télécharger et télécharger des images avec ASP.net
- 17. Comment pouvez-vous redimensionner les images avec css dans IE?
- 18. Lorsque je convertis des fichiers HTML en Adobe Air, comment ajouter des CSS et des images?
- 19. Email et déplacer des fichiers récursivement
- 20. Images de coin utilisant CSS
- 21. UIToolbar avec des images et des titres tels que UITabBar
- 22. Comment modéliser et créer un jeu de cartes personnalisé dans des rails?
- 23. Comment puis-je créer un menu avec des images comme celles utilisées sur photobucket?
- 24. Protéger vos images, vos fichiers CSS et Javascript de l'utilisation de sites externes avec Apache?
- 25. Modifier des images avec un proxy Http
- 26. jQuery UI images css
- 27. comment envoyer un email avec un graphisme via php
- 28. interaction php et email
- 29. étiquettes de positionnement et entrées Avec CSS
- 30. comment utiliser des images transparentes pour masquer les images et ajouter un EventListener
Est-ce que ma réponse répond à votre question? –
@bjeanes - Je n'ai pas vraiment eu le temps d'essayer cela car je suis occupé avec autre chose, mais il semble que votre solution soit dans le bon sens. Merci. Je vais essayer de mettre à jour. – Akshay