根据日期发送电子邮件

时间:2012-06-27 11:53:22

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

如何根据用户插入电子邮件向用户发送电子邮件? 使用if语句,不使用gems。

用户插入姓名,电子邮件和日期。然后根据他们插入的日期,系统检查日期,如果今天=他们插入日期+ 7天然后发送电子邮件?我应该在哪里打字?是用户邮件,还是“Dop”控制器???

用户邮件:

 class UserMailer < ActionMailer::Base
  default from: "bla bla bla"
   def welcome_email(dop)
    @dop = dop
    @url  = "blah blah"
    mail(:to => dop.mail, :subject => "Welcome to My Awesome Site")
  end
 end

“Dop”是指怀孕日期

2 个答案:

答案 0 :(得分:1)

在我看来,UserMailer应该只关注电子邮件的实际创建和发送。如果调用UserMailer,您应该已经决定要发送电子邮件。

因此,在您的情况下,我假设您在控制器中有一个创建操作,它指示邮件程序发送电子邮件。在这里,您只需将此操作封装在if语句中。

date = Date.civil(params[:date][:year].to_i, params[:date][:month].to_i, params[:date][:day].to_i)

if date + 7.days == Date.today 
  UserMailer.welcome_email(@dop).deliver
end

这假设你在表单中使用这样的东西:

<%= select_date Date.today, prefix: :date %>

答案 1 :(得分:0)

在邮件中:

class UserMailer < ActionMailer::Base
  default :from => "blah@blah.com"

  def welcome_email(dop)
    @dop = dop
    @date = dop.date + 7.days
    @url = "http://www.myurl.com"
    mail(:to => dop.mail, :subject => "Welcome to My Awesome Site")
  end
end

然后只需将@date插入邮件程序视图

即可
<h1>Welcome to example.com, <%= @user.name %></h1>
<p>
  Something about pregnancy on <%= @date %>!
</p>
<p>
  Check out our <%= link_to "awesome url", @url %>!
</p>