Ruby on rails 当我想使用密件抄送时,如何正确使用ActionMailer?
我花时间做研究,这就是我能想到的。Ruby on rails 当我想使用密件抄送时,如何正确使用ActionMailer?,ruby-on-rails,ruby-on-rails-3,actionmailer,Ruby On Rails,Ruby On Rails 3,Actionmailer,我花时间做研究,这就是我能想到的。 但是,我很确定这部分有问题@users\u emails+=user.email 有人能修好我的代码让它工作吗 控制器/用户\u controller.rb def send_all_at_once @notification_users = User.where("users.country_id=?", 36) @notification_users.each do |user| @users_emails += use
但是,我很确定这部分有问题
@users\u emails+=user.email
有人能修好我的代码让它工作吗
控制器/用户\u controller.rb
def send_all_at_once
@notification_users = User.where("users.country_id=?", 36)
@notification_users.each do |user|
@users_emails += user.email
end
@subject = "Test subject"
@body = "Test body"
CallMailer.call_email(@users_emails, @subject, @body).deliver
end
class CallMailer < ActionMailer::Base
default :from => "dont-reply@example.com"
def call_email(@users_emails, @subject, @body)
mail(:to => "admin@example.com",
:bcc => @users_emails,
:subject => @subject,
:body => @body) do |format|
format.html
format.text
end
end
end
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body>
<p>
You received a message.
</p>
<p>
Subject: <%= raw @subject %>
</p>
<blockquote>
<p>
<%= simple_format(@body) %>
</p>
</blockquote>
<p>
From: <%= link_to root_url,root_url %>
</p>
</body>
</html>
app/mailers/call\u mailer.rb
def send_all_at_once
@notification_users = User.where("users.country_id=?", 36)
@notification_users.each do |user|
@users_emails += user.email
end
@subject = "Test subject"
@body = "Test body"
CallMailer.call_email(@users_emails, @subject, @body).deliver
end
class CallMailer < ActionMailer::Base
default :from => "dont-reply@example.com"
def call_email(@users_emails, @subject, @body)
mail(:to => "admin@example.com",
:bcc => @users_emails,
:subject => @subject,
:body => @body) do |format|
format.html
format.text
end
end
end
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body>
<p>
You received a message.
</p>
<p>
Subject: <%= raw @subject %>
</p>
<blockquote>
<p>
<%= simple_format(@body) %>
</p>
</blockquote>
<p>
From: <%= link_to root_url,root_url %>
</p>
</body>
</html>
class CallMailer“不-reply@example.com"
def call_email(@users_email、@subject、@body)
邮件(:收件人=>)admin@example.com",
:bcc=>@users\u电子邮件,
:subject=>@subject,
:body=>@body)do |格式|
format.html
format.text
结束
结束
结束
查看/call\u mailer/call\u email.html.erb
def send_all_at_once
@notification_users = User.where("users.country_id=?", 36)
@notification_users.each do |user|
@users_emails += user.email
end
@subject = "Test subject"
@body = "Test body"
CallMailer.call_email(@users_emails, @subject, @body).deliver
end
class CallMailer < ActionMailer::Base
default :from => "dont-reply@example.com"
def call_email(@users_emails, @subject, @body)
mail(:to => "admin@example.com",
:bcc => @users_emails,
:subject => @subject,
:body => @body) do |format|
format.html
format.text
end
end
end
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body>
<p>
You received a message.
</p>
<p>
Subject: <%= raw @subject %>
</p>
<blockquote>
<p>
<%= simple_format(@body) %>
</p>
</blockquote>
<p>
From: <%= link_to root_url,root_url %>
</p>
</body>
</html>
您收到一条消息。
主题:
发件人:
通常,您会将密件抄送的电子邮件地址作为数组传递:
mail(:to => "admin@example.com",
:bcc => ['first@email.com', 'second@email.com', 'third@email.com'],
:subject => @subject,
:body => @body)
但是,由于@user\u emails
已经是一个电子邮件数组,您应该放弃括号,直接传递实例变量:
mail(:to => "admin@example.com",
:bcc => @users_emails,
:subject => @subject,
:body => @body)
以下描述了创建用户电子邮件数组的正确语法:
@notification_users.each do |user|
@users_emails << user.email
end
更新2:
通过在调用mail
函数时直接映射用户电子邮件,可以完全绕过控制器循环:
mail(:to => "admin@example.com",
:bcc => User.where("users.country_id=?", 36).map(&:email),
:subject => @subject,
:body => @body)
谢谢你的评论!如何使用
@notification|u users.each do | user |
和user.email
?非常感谢:)其他一切看起来都很好?您可能需要尝试传递@users_电子邮件
。由于@users\u emails
已经是一个数组,因此可能没有必要像传递单个电子邮件时那样将其包含在数组中,例如,['first@email.com', 'second@email.com“]
。从理论上讲,人们也可以做@user\u emails+=[user.email]
。@zeantsoi我在更新之前试过了。实际上,它只向admin@example.com
:(@users\u电子邮件没有收到任何电子邮件