Я использую Rails 5 , и у меня такая же ситуация: электронное письмо было отправлено только последнему получателю, но также оно было отправлено как обычный текст, а не как электронное письмо в формате HTML.
Попробовав несколько советов, я решил исправить это следующим образом:
Почтовый клиент:
class BrochureMailer < ApplicationMailer
default from: "info@site.com"
def newsletter(sponsor, brochures_list)
@sponsor = sponsor
@brochures = brochures_list
mail(
to: @sponsor.email,
subject: "Interesting subject!"
)
end
end
Контроллергде вызывается почтовая программа:
class Admin::DashboardController < Admin::BaseController
def send_newsletter
sponsors = params[:sponsor_ids]
brochures = params[:brochure_ids]
sponsors = Sponsor.where(id: sponsors)
brochures = Brochure.where(id: brochures).to_a
# Send Newsletter email to the given Sponsors
sponsors.each do |sponsor|
BrochureMailer.newsletter(sponsor, brochures).deliver_later
end
redirect_back(fallback_location: admin_root_path, success: 'Newsletter sent!')
end
end
И в представлении, что-то вроде этого:
<% @brochures.each do |brochure| %>
<table width="280" border="0" cellpadding="0" cellspacing="0" align="left" valign="top" class="floater">
<tr>
<td align="center" valign="top">
<a target="_blank" href="<%= brochure_url(brochure) %>">
<img border="0" vspace="0" hspace="0" src="<%= brochure.image.blank? ? 'default.png' : brochure.image.url(public: true) %>" width="250" height="142">
<b><%= brochure.title %></b>
</a>
<br>
<%= brochure.description.truncate(60) %>
</td>
</tr>
</table>
<% end %>
И это работает как шарм!Я не уверен, что это правильный путь или самый оптимальный путь, но просто считаю это второй возможностью.
Я надеюсь, что это может быть полезно для кого-то еще.