我在我的rails应用程序上有100个设计用户,我想向他们发送电子邮件。我有SMTP详细信息,我正在尝试按照此示例http://railscasts.com/episodes/61-sending-email-revised
我的问题是我无法理解如何使其工作?
我创建了
rails g mailer newsletter single_email
但我不确定如何从那里拿走它,任何帮助都将受到高度赞赏
编辑 - 这是我到目前为止,这是正确的吗?
# app/mailers/user_mailer.rb
class UserMailer < ActionMailer::Base
def newsletter(user)
mail( to: user.email, subject: "Your subject")
end
end
# /lib/tasks/newsletter.rake
task :send_newsletter => :environment do
User.all.each do |user|
UserMailer.newsletter(user).deliver
end
end
答案 0 :(得分:2)
您可以为此创建一个rake任务:
# /lib/tasks/newsletter.rake
task :send_newsletter => :environment do
User.find_each do |user|
UserMailer.newsletter(user).deliver
end
end
当您从命令行运行Users
时,这将迭代所有single_email
并从您使用生成器创建的NewsletterMailer
调用rake send_newsletter
。
基本的邮件程序看起来像这样:
# /app/mailers/user_mailer.rb
class UserMailer < ActionMailer::Base
default from: 'newsletter@example.com'
def newsletter(user)
@user = user
mail(to: @user.email, subject: 'My newsletter')
end
end
mail(to: @user.email, subject: 'My newsletter')
将呈现的电子邮件的视图如下所示:
# app/views/user_mailer/newsletter.html.erb
<!DOCTYPE html>
<html>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
</head>
<body>
<h1>Hello <%= @user.name %></h1>
<p>more text...</p>
</body>
</html>
此示例假设您的User
模型有name
- 只是为了向您显示您在邮件程序视图中有权访问@user
,因为您设置了@user
def newsletter(user)
之前。{/ p>
答案 1 :(得分:1)
取决于您希望何时何地发送此电子邮件
def single_email(users_email)
mail( to: users_email, subject: "Your subject")
end
现在可以从控制器或模型中调用它。还为电子邮件创建了一个HTML
NewsletterMailer.single_email(User.all.map(&:email).join(';')).deliver