Почему отзывчивый?
В наши дни многие пользователи читают свои электронные письма через свои мобильные устройства (около 48% в соответствии с этой статистикой ), и если вы хотите предоставить своим абонентам хороший пользовательский опыт, вы должны рассмотреть адаптивный дизайн электронной почты.
Есть несколько способов подойти к этому. Вы можете создавать электронные письма самостоятельно и использовать медиа-запросы для обслуживания различных экранов, или вы можете использовать премиальные и не премиум-шаблоны, доступные в Интернете, и изменять их в соответствии со своими потребностями. Проблема с этими решениями заключается в том, чтобы получать постоянный просмотр ваших писем во всех почтовых клиентах. Outlook, из-за ограниченной поддержки CSS, с которым особенно трудно работать, когда дело доходит до адаптивных писем, — это Outlook.
Каково решение?
Zurb, та же компания, которая разработала платформу Foundation, выпустила почтовую платформу Ink. Согласно им, Ink позволяет вам «быстро создавать адаптивные HTML-письма, которые работают на любом устройстве и клиенте. Даже внешний вид. И это то, с чем мы будем работать в этом уроке. Мы собираемся создать приложение Rails, которое отправит электронное письмо пользователю после того, как он зарегистрирует учетную запись.
Сначала мы создадим новое приложение под названием rails_ink.
rails new rails_ink
В демонстрационных целях мы не будем создавать большое приложение. Я использовал команду scaffold для генерации модели User и связанных с ней представлений и контроллеров.
rails generate scaffold user name:string email:string
Перенос базы данных после этого.
rake db:migrate
Далее мы сгенерируем почтовую программу.
rails generate mailer UserMailer
Это создаст почтовый класс, каталог просмотра и тестовый файл.
Далее мы добавим файл конфигурации в каталог config/initializers
. Это будет содержать настройки конфигурации почтовой программы. Для тестирования мы будем использовать SMTP-сервер Gmail. В производственной среде вы можете использовать другой способ доставки, например, sendmail с вашего локального сервера.
Создайте файл с именем mailer_settings
в mailer_settings
config/initializers
и вставьте следующий код, внося необходимые изменения.
ActionMailer::Base.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :user_name => ENV['GMAIL_USERNAME'], :password => ENV['GMAIL_PASSWORD'], :authentication => "plain" }
Нам нужно добавить метод с именем registration_email
в файл app/mailers/user_mailer.rb
. Этот метод отправит электронное письмо пользователю, который зарегистрировался. Метод примет объект User
и назначит его переменной экземпляра, чтобы он был доступен нашему представлению. Поскольку в нашем электронном письме будет изображение в баннере, мы должны включить его в качестве встроенного вложения в почтовой программе.
class UserMailer < ActionMailer::Base default from: '[email protected]' def registration_email(user) @user = user attachments.inline['banner.jpeg'] = File.read("#{Rails.root}/app/assets/images/banner.jpeg") mail(to: user.email, subject: 'Registration Confirmation') end end
Теперь нам нужно создать файл представления для нашей электронной почты. Он будет расположен в каталоге app/views/user_mailer
и должен иметь то же имя, что и соответствующий метод в классе UserMailer
.