我正在尝试向多个品牌发送多封电子邮件。我已经尝试在更改邮件收件人的电子邮件时创建一个多次运行的循环,但它只会发送到最后一个邮件请求。我该如何解决这个问题?这是我目前的代码:
@user_products.each do |p|
@brands << p.brand
end
count = 0
@brands = @brands.uniq
while count < @brands.count
debugger
@brand = @brands[count]
mail(to: @brands[count].email, subject: 'A purchase has been made!' )
count += 1
end
我的html代码,用于获取特定品牌的产品:
<body style="margin-left: auto; margin-right: auto; background-color: #d55d5d; width: 75%;">
<div align="center">
<img src="http://localhost:3000/assets/motobanner-d2fde8a6e30060905a6f72b0c8128d222a7596e690a7a4c648e5e81109bf4600.jpg" style="margin-top: 0% ;width: 75%; height: 240px;" ></img>
</div>
<div align="center">
<h2>Hello, <%= @brand.name %>!</h2>
<p style="font-size: 1.2em;">There has been a purchase of the following items:</p>
<% @user_products.each do |item| %>
<div align="center"> <%= image_tag "http://localhost:3000/#{item.picture.url}", alt: item.product_name if item.picture && item.brand_id == @brand.id %><br /></div>
<b><%= "Product name:" if item.brand_id == @brand.id %></b> <%= item.product_name if item.brand_id == @brand.id %>
<b><%= "Product description:" if item.brand_id == @brand.id %></b><br /> <p class="product-description"><%= item.product_description if item.brand_id == @brand.id %></p>
<b><%= "Product price:" if item.brand_id == @brand.id %></b> <%= "£" + item.product_price.to_s if item.brand_id == @brand.id %>
<% end %>
</body>
当我运行循环时,我的电子邮件的调试器就在那里,并且每次循环时都会运行mail(to: @brands[count].email, subject: 'A purchase has been made!' )
行,这就是为什么我无法理解为什么它不起作用。
答案 0 :(得分:1)
你应该在邮件之外进行循环,如官方示例所示:
class SendWeeklySummary
def run
User.find_each do |user|
UserMailer.weekly_summary(user).deliver_now
end
end
end
如下所述:http://guides.rubyonrails.org/action_mailer_basics.html 并且您可能缺少deliver_now部分(可以由deliver_later替换并由工作进程执行