Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Как вы можете видеть, представление HTML может включать тег <style> для определения основных стилей. Не все HTML и CSS поддерживаются, особенно для всех почтовых клиентов, но вам определенно необходимо иметь достаточный формат управления текстовыми стилями.

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

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

Ответ 3

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

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

image_tag result.photo.url(:small)