-2

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

用户插入姓名、电子邮件和日期。然后根据他们插入的日期,系统检查日期,如果今天 = 他们插入的日期 + 7 天然后发送电子邮件?我应该在哪里输入这个?是在 usermailer 还是“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”是指怀孕日期

4

2 回答 2

1

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

因此,在您的情况下,我假设您在控制器中有一个 create 操作,它指示 Mailer 发送电子邮件。在这里,您只需将此操作封装在 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 %>
于 2012-06-27T12:04:31.830 回答
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>
于 2012-06-27T12:03:53.383 回答