有人可以帮我了解如何向我网站的所有用户发送电子邮件吗?如果用户注册或提交联系表或执行某些操作,我知道如何创建电子邮件。但是,如果不执行一些操作,我无法弄清楚如何发送电子邮件。
在我的 config/environments/production.rb 我有:
config.action_mailer.smtp_settings = {
:address => "smtp.mandrillapp.com",
:port => 587,
:domain => "majorfinder.com",
:user_name => ENV["MANDRILL_USERNAME"],
:password => ENV["MANDRILL_PASSWORD"],
:authentication => :plain,
:enable_starttls_auto => true
}
config.action_mailer.default_url_options = {
:host => "majorfinder.com"
}
在我的 app/mailers/questions_mailer.rb 我有:
class QuestionsMailer < ActionMailer::Base
default from: "lauralee@majorfinder.com"
def interest_question(user)
@user = user
mail(to: @user.email, subject: "My Subject")
end
我创建了我的电子邮件的 txt 和 html 版本并将其放置在 app/views/questions_mailer/email.html.erb / email.txt.erb 中。
我缺少的是我在控制器中放入什么来发送电子邮件。是不是像:
QuestionsMailer.interest_question(@user).deliver
在发送此邮件时,我有大约 300 个用户。我应该把它分成多个批次吗(就像我在这里找到的:Send emails based on interval using Ruby on Rails)?
我不知道这是否重要,但我在 heroku 上托管,我的数据库是 postgresql。
非常感谢你能给我的任何帮助!
更新:我按照@jefflunt 的建议创建了一个 rake 任务。这是我的样子:
desc "Email to ask users what they're most interested in"
task :interests => :environment do
User.all.each do |u|
QuestionsMailer.interest_question(u).deliver
end
end
然后我在rake interests
本地运行以确保一切正常。一旦我将所有更改推送到 heroku,我就会运行heroku run rake interests
并向所有用户发送一封电子邮件。