我必须每周发送电子邮件给所有的用户关于最新的事情发生。我正在使用ActionMailer来完成其他邮件任务,但是我不知道如何自动化每周的电子邮件。
更新
我找到了什么时候都行 gem,它可以用来调度cron作业。我想这可以用来发送每周的电子邮件,我打算。仍然在寻找如何使它与ActionMailer一起工作的方法,一旦我找到了解决方案,就会更新
更新2
这是迄今为止我使用什么时候都行 gem所做的工作:-
在schedule.rb中
every 1.minute do
runner "User.weekly_update", :environment => 'development'
end在users_mailer.rb中
def weekly_mail(email)
mail(:to => email, :subject => "Weekly email from footyaddicts")
end在users.rb中
def self.weekly_update
@user = User.all
@user.each do |u|
UsersMailer.weekly_mail(u.email).deliver
end
end如果我尝试从控制台运行User.weekly_update,我就能够获得邮件。我正在测试在开发模式和使用rvm。我检查了我的crontab文件,它有正确的东西。
然而,我不会自动从应用程序收到任何邮件。有什么线索可能是错的吗?
谢谢,
发布于 2011-12-08 20:45:54
好的,所以这是任何创业板的路径问题,这个问题是在我安装另一个版本的ruby时创建的。
在我的机器中,新的ruby版本安装在/usr/local/bin/ruby中。在我的rails应用程序中,我必须转到文件脚本/rails,并将#!/usr/bin/env替换为#!/usr/local/bin/ruby。
我是通过访问cron.log文件发现的,该文件显示了以下错误消息:- /usr/bin/env: ruby:没有这样的文件或目录
我创建了一个cron.log文件来记录cron错误--这是我在问题中编写的schedule.rb代码中所做的:-
every 2.minutes do
runner "User.weekly_update", :environment => 'development', :output => 'log/cron.log'
end 我现在收到定期邮件。
发布于 2011-12-07 10:27:23
您似乎还没有配置ActionMailer设置。首先从控制台查看日志,邮件处理是否正常工作(粘贴日志)。如果是,那么执行以下步骤。
将此添加到您的宝石文件中。
gem 'tlsmail'跑
bundle install在配置/环境/Development.rb文件中写入这些配置设置
require 'tlsmail'
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => "587",
:domain => "gmail.com",
:enable_starttls_auto => true,
:authentication => :login,
:user_name => "<address>@gmail.com",
:password => "<password>"
}
config.action_mailer.raise_delivery_errors = true在user_name和密码中添加您的工作密码/电子邮件。不要忘记重新启动服务器。
https://stackoverflow.com/questions/8401642
复制相似问题