Question

Comment créez-vous et envoyez-vous des courriels à partir de l'application Rails, contenant des images et un formatage adéquat? comme ceux que vous recevez de facebook et que vous aimez.

Était-ce utile?

La solution

En supposant que vous sachiez comment envoyer des courriers électroniques en texte brut de Rails à l'aide d'ActionMailer, pour que vos courriers HTML fonctionnent, vous devez définir un type de contenu pour votre e-mail.

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         "system@example.com"
    body         :user => recipient
    content_type "text/html"
  end
end

Notez la ligne content_type "text/html". Cela indique à ActionMailer d’envoyer un courrier électronique dont le type de contenu est text/html au lieu du type par défaut text/plain.

.

Ensuite, vous devez faire en sorte que vos vues de publipostage soient imprimées app/views/my_mailer/signup_notification.html.erb. Par exemple, votre fichier de vue <style> peut 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 le voir, la vue CSS peut inclure une balise <img /> pour définir les styles de base. Tous <=> et <=> ne sont pas pris en charge, en particulier sur tous les clients de messagerie, mais vous devez absolument disposer d’un contrôle de mise en forme suffisant sur les styles de texte.

L’incorporation d’images est un peu plus délicate si vous envisagez d’afficher des e-mails joints. Si vous incluez simplement des courriers électroniques provenant de sites externes, vous pouvez utiliser une balise <=> comme vous le feriez habituellement dans <=>. Cependant, de nombreux clients de messagerie bloquent l'affichage de ces images jusqu'à ce que l'utilisateur l'autorise. Si vous devez afficher des images jointes, le pièce jointe en ligne du plug-in Rails mérite un coup d'œil. .

Pour plus d'informations sur l'assistance mail de Rails, la la documentation d'ActionMailer est une excellente ressource

Autres conseils

Pour les images, vous pouvez simplement utiliser l'aide normale image_tag après avoir défini le ActionMailer::Base.asset_host = 'http://www.your-domain.com'

J'utilise Paperclip pour stocker mes images. Ainsi, dans mon cas, je peux ajouter une image à un courrier électronique à l'aide de ceci.

image_tag result.photo.url(:small)

Lisez Comment créer d'excellents courriels HTML avec CSS , c'est un bon début. Tous les courriels doivent suivre HTML 3.0!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top