请问有没有人可以帮我理解如何给网站所有用户发送电子邮件?我知道如果用户注册、提交联系表单或执行某些操作,我就可以创建电子邮件。但是我无法想象在没有任何操作的情况下如何发送电子邮件。
在我的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"
}
在我的应用程序/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
我已经创建了我的电子邮件的文本和HTML版本,并将其放置在app/views/questions_mailer/email.html.erb / email.txt.erb中。
我缺少的是在我的控制器中放置什么来发送电子邮件。像这样的东西:
```ruby def send_email QuestionsMailer.email.deliver_now end ```
QuestionsMailer.interest_question(@user).deliver
发送此邮件时,我有大约300个用户。我应该将其分成若干个批次发送(例如我在这里找到的内容:使用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
并向所有用户发送了电子邮件。