首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过action mailer Rails 3.1自动发送邮件

通过action mailer Rails 3.1自动发送邮件
EN

Stack Overflow用户
提问于 2011-12-06 14:37:27
回答 2查看 3K关注 0票数 1

我必须每周发送电子邮件给所有的用户关于最新的事情发生。我正在使用ActionMailer来完成其他邮件任务,但是我不知道如何自动化每周的电子邮件。

更新

我找到了什么时候都行 gem,它可以用来调度cron作业。我想这可以用来发送每周的电子邮件,我打算。仍然在寻找如何使它与ActionMailer一起工作的方法,一旦我找到了解决方案,就会更新

更新2

这是迄今为止我使用什么时候都行 gem所做的工作:-

在schedule.rb中

代码语言:javascript
复制
every 1.minute do
    runner "User.weekly_update", :environment => 'development'
end

在users_mailer.rb中

代码语言:javascript
复制
def weekly_mail(email)
    mail(:to => email, :subject => "Weekly email from footyaddicts")
end

在users.rb中

代码语言:javascript
复制
def self.weekly_update
    @user = User.all
    @user.each do |u|
      UsersMailer.weekly_mail(u.email).deliver
    end
end

如果我尝试从控制台运行User.weekly_update,我就能够获得邮件。我正在测试在开发模式和使用rvm。我检查了我的crontab文件,它有正确的东西。

然而,我不会自动从应用程序收到任何邮件。有什么线索可能是错的吗?

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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代码中所做的:-

代码语言:javascript
复制
every 2.minutes do
    runner "User.weekly_update", :environment => 'development', :output => 'log/cron.log' 
end 

我现在收到定期邮件。

票数 2
EN

Stack Overflow用户

发布于 2011-12-07 10:27:23

您似乎还没有配置ActionMailer设置。首先从控制台查看日志,邮件处理是否正常工作(粘贴日志)。如果是,那么执行以下步骤。

将此添加到您的宝石文件中。

代码语言:javascript
复制
gem 'tlsmail'

代码语言:javascript
复制
bundle install

在配置/环境/Development.rb文件中写入这些配置设置

代码语言:javascript
复制
  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和密码中添加您的工作密码/电子邮件。不要忘记重新启动服务器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8401642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档