基本邮件程序

此示例使用四个不同的文件:

  • 用户模型
  • 用户邮件
  • 电子邮件的 html 模板
  • 电子邮件的纯文本模板

在这种情况下,用户模型调用邮件程序中的 approved 方法并传递已批准的 post(模型中的 approved 方法可以通过回调,控制器方法等调用)。然后,邮件程序使用来自传入的 post 的信息(例如标题)从 html 或纯文本模板生成电子邮件。默认情况下,邮件程序使用与邮件程序中的方法同名的模板(这就是邮件程序方法和模板都具有已批准名称的原因)。

user_mailer.rb

class UserMailer < ActionMailer::Base
  default from: "donotreply@example.com"

  def approved(post)
      @title = post.title
      @user = post.user
      mail(to: @user.email, subject: "Your Post was Approved!")
  end
end

user.rb

def approved(post)
    UserMailer.approved(post)
end

approved.html.erb

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Post Approved</title>
    </head>
    <body>
        <h2>Congrats <%= @user.name %>! Your post (#<%= @title %>) has been approved!</h2>
        <p>We look forward to your future posts!</p>
    </body>
</html>

approved.text.erb

Congrats <%= @user.name %>! Your post (#<%= @title %>) has been approved!
We look forward to your future posts!