如何根据用户插入电子邮件向用户发送电子邮件? 使用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”是指怀孕日期
答案 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>