如何使用Actionmailer发送Heroku生产环境的每日电子邮件?

时间:2014-08-14 04:18:04

标签: ruby-on-rails heroku actionmailer

感谢您查看此内容。

Heroku不允许直接从应用程序运行cron任务;你必须使用他们的调度程序来设置cron作业。我写的工作在开发中工作得很好,但我的用户都没有收到生产中的电子邮件。

我的邮件代码:

class PostsMailer < ActionMailer::Base

 default from: "christopher@scratchitoff.co"

  def daily_email(user)
    @user= user
    @posts = user.posts
    @url = "http://scratchitoff.co/lists"
    mail(to:@user.email, subject: 'Your active to-do items')
  end

我对邮件的看法:

<h2>Hello <%= @user.name %></h2>
 Your active to-do Items:
 <ul>
   <% @posts.each do |post| %>
     <li><%= post.title %></li>
   <% end %>
 </ul>

 -sincerely, Christopher

我的佣金任务由调度程序运行:

namespace :notifications do 
  desc " Daily posts email to users"
    task :daily_post_email => :environment do 
      users = User.all   
      users.each do |user|
        PostsMailer.daily_email(user)
      end
    end
  end

有什么明显的东西我不见了吗?

2 个答案:

答案 0 :(得分:-1)

是的,我认为你忘记了有效载荷 - 试试:PostsMailer.daily_email(user).deliver

答案 1 :(得分:-1)

有几种方法可以做到这一点:   - Cronjob   - 在rails config中做一些作弊,在config目录下创建schedule.rb文件。然后添加以下行:

every 1.day do
  runner "User.send_mail"
end

你可以看到。您需要在User模型中定义send_mail方法。这只是一个例子。希望对你有所帮助。