Как мне создать электронную почту с помощью CSS и изображений из Rails?
-
19-08-2019 - |
Вопрос
Как вы создаете и отправляете электронные письма из приложения 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!