Как мне создать электронную почту с помощью CSS и изображений из Rails?

StackOverflow https://stackoverflow.com/questions/472450

Вопрос

Как вы создаете и отправляете электронные письма из приложения Rails, которые содержат изображения и правильное форматирование? как те, которые вы получаете из Facebook и нравится.

Это было полезно?

Решение

Предполагая, что вы знаете, как отправлять обычные текстовые электронные письма из Rails с помощью ActionMailer, чтобы заставить HTML работать электронную почту, вам необходимо установить тип содержимого для вашей электронной почты.

Например, ваш уведомитель может выглядеть так:

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

Обратите внимание на строку content_type "text/html". Это говорит ActionMailer отправлять электронную почту с типом контента text/html вместо стандартного text/plain.

Далее вы должны сделать вывод своей почтовой программы app/views/my_mailer/signup_notification.html.erb. Например, ваш файл вида <style> может выглядеть следующим образом:

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

Как видите, представление CSS может включать тег <img /> для определения основных стилей. Поддерживаются не все <=> и <=>, особенно во всех почтовых клиентах, но вы обязательно должны иметь достаточный контроль над форматированием стилей текста.

Встраивание изображений немного сложнее, если вы планируете показывать прикрепленные электронные письма. Если вы просто включаете электронные письма с внешних сайтов, вы можете использовать тег <=>, как это обычно делается в <=>. Однако многие почтовые клиенты блокируют отображение этих изображений до тех пор, пока пользователь не авторизует их. Если вам нужно отобразить вложенные изображения, возможно, стоит посмотреть плагин Rails Встроенные вложения .

Для получения дополнительной информации о поддержке рассылки Rails документация ActionMailer является отличным ресурс

Другие советы

Для изображений вы можете просто использовать обычный помощник image_tag после того, как вы определили ActionMailer::Base.asset_host = 'http://www.your-domain.com'

Я использую Paperclip для хранения своих изображений, поэтому в моем случае я могу добавить изображение в электронное письмо, используя это.

image_tag result.photo.url(:small)

Прочитайте Как создавать отличные электронные письма в формате HTML с помощью CSS , это хорошее начало. Все электронные письма должны соответствовать HTML 3.0!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top