Как вы создаете и отправляете электронные письма из приложения Rails, содержащие изображения и правильное форматирование? как те, которые вы получаете от facebook и т.д.
Как создать электронную почту с помощью css и изображений из Rails?
Ответ 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 - отличный ресурс
Ответ 2
Прочитайте Как создать отличные HTML-письма с помощью CSS, это хороший старт. Все электронные письма должны соответствовать HTML 3.0!
Ответ 3
Для изображений вы можете просто использовать обычный image_tag
помощник после того, как вы определили ActionMailer::Base.asset_host = 'http://www.your-domain.com'
Я использую Paperclip для хранения изображений, поэтому в моем случае я могу добавить изображение к электронной почте, используя это.
image_tag result.photo.url(:small)