ruby - 电子邮件属性的未定义方法
问题描述
我正在尝试一次向多个收件人发送一堆单独的电子邮件。我打算这样做是用户将下载一个 Excel 电子表格并用一堆姓名和相应的电子邮件填写它,然后将该电子表格上传到应用程序。该应用程序创建填写了字段的客人名单对象,我想向客人名单中的每个人发送一封电子邮件。
客人名单的导入工作正常,但我似乎无法让我的邮件程序正常发送电子邮件。
更新
Mailer 现在发送的电子邮件数量与来宾列表中的人数相同,但所有电子邮件都发送到其中一个电子邮件地址。
邮件程序代码:
def guestlist_email()
Guestlist.all.each { |guestlist| mail(to: guestlist.email) }
end
控制器代码:
def import
Guestlist.import(params[:file])
Guestlist.all.each do |guestlist|
GuestMailer.with(guestlist: @guestlist).guestlist_email.deliver_now
end
redirect_to guestlists_url, notice: "Guest-list Successfully
Imported."
end
如果您需要更多代码,我将上传。
这是来自终端的日志。
(0.2ms) begin transaction
↳ app/models/guestlist.rb:20
Guestlist Create (3.5ms) INSERT INTO "guestlists" ("id", "name", "email", "response", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?) [["id", 3], ["name", "Ryan Neill"], ["email", "ryan.neill11@gmail.com"], ["response", "no"], ["created_at", "2019-10-01 14:43:31.133312"], ["updated_at", "2019-10-01 14:43:31.133312"]]
↳ app/models/guestlist.rb:20
(3.1ms) commit transaction
↳ app/models/guestlist.rb:20
Guestlist Load (0.3ms) SELECT "guestlists".* FROM "guestlists" WHERE "guestlists"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]]
↳ app/models/guestlist.rb:18
(0.1ms) begin transaction
↳ app/models/guestlist.rb:20
Guestlist Create (1.1ms) INSERT INTO "guestlists" ("id", "name", "email", "response", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?) [["id", 2], ["name", "robiin"], ["email", "robinbrink43@gmail.com"], ["response", "yes"], ["created_at", "2019-10-01 14:43:31.147201"], ["updated_at", "2019-10-01 14:43:31.147201"]]
↳ app/models/guestlist.rb:20
(3.6ms) commit transaction
↳ app/models/guestlist.rb:20
Guestlist Load (0.3ms) SELECT "guestlists".* FROM "guestlists" WHERE "guestlists"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
↳ app/models/guestlist.rb:18
(0.1ms) begin transaction
↳ app/models/guestlist.rb:20
Guestlist Create (0.8ms) INSERT INTO "guestlists" ("id", "name", "email", "response", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?) [["id", 1], ["name", "ryan"], ["email", "ryan.neill11@gmail.com"], ["response", ""], ["created_at", "2019-10-01 14:43:31.159332"], ["updated_at", "2019-10-01 14:43:31.159332"]]
↳ app/models/guestlist.rb:20
(3.8ms) commit transaction
↳ app/models/guestlist.rb:20
Redirected to http://localhost:3000/guestlists
Guestlist Load (0.6ms) SELECT "guestlists".* FROM "guestlists" ORDER BY "guestlists"."id" ASC LIMIT ? [["LIMIT", 1]]
↳ app/mailers/guest_mailer.rb:11
Rendering guest_mailer/guestlist_email.html.erb within layouts/mailer
Rendered guest_mailer/guestlist_email.html.erb within layouts/mailer (1.0ms)
Guestlist Load (0.5ms) SELECT "guestlists".* FROM "guestlists" ORDER BY "guestlists"."id" ASC LIMIT ? OFFSET ? [["LIMIT", 1], ["OFFSET", 1]]
↳ app/mailers/guest_mailer.rb:12
Rendering guest_mailer/guestlist_email.html.erb within layouts/mailer
Rendered guest_mailer/guestlist_email.html.erb within layouts/mailer (1.1ms)
Guestlist Load (0.8ms) SELECT "guestlists".* FROM "guestlists" ORDER BY "guestlists"."id" ASC LIMIT ? OFFSET ? [["LIMIT", 1], ["OFFSET", 2]]
↳ app/mailers/guest_mailer.rb:13
Rendering guest_mailer/guestlist_email.html.erb within layouts/mailer
Rendered guest_mailer/guestlist_email.html.erb within layouts/mailer (0.1ms)
GuestMailer#guestlist_email: processed outbound mail in 108.8ms
Sent mail to ryan.neill11@gmail.com (3768.3ms)
Date: Tue, 01 Oct 2019 16:43:31 +0200
From: rsvpeasy01@gmail.com
To: ryan.neill11@gmail.com
Message-ID: <5d9366134463d_7c6d3fdbf4e367045421e@Ryans-MacBook-Air.local.mail>
Subject: Guestlist email
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
/* Email styles need to be inline */
</style>
</head>
<body>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
/* Email styles need to be inline */
</style>
</head>
<body>
</body>
</html>
</body>
</html>
Completed 302 Found in 3969ms (ActiveRecord: 20.3ms)
提前致谢
解决方案
如果您将电子表格导入功能与电子邮件功能分开,它可能更具可读性。所以首先导入整个excel表。然后循环遍历表中的数据并一次发送一封邮件。
你的循环应该是这样的:
class SendWeeklySummary
def run
User.find_each do |user|
UserMailer.with(user: user).weekly_summary.deliver_now
end
end
end
从
推荐阅读
- javascript - 如何删除这些 D3.js 控制台日志错误
- java - 我可以用什么来屏蔽字符串?
- uwp - UWP 联系人选择器仅在 Windows 10 移动版中选择联系人的姓名字段
- c# - 使用线程并行化读取文本文件
- javascript - 部署到 Google App Engine 时找不到 Express 可选路由
- python - 使用正则表达式在字符串 Python 中查找和合并单词
- css - 如何在仅主页的背景图像(以 css 中输入)上添加透明内容
- r - 如何根据另一个数据框的行号转换两列数据框的内容
- javascript - 尝试运行一个程序来计算期末考试所需的成绩,以获得他们想要的总成绩
- javascript - 如何防止 jQuery apendTo 复制内容