[WIP] Rails Action Mailer Document

创建: 2019/10/01

更新: 2019/12/25 纠正subject说明, 内容->标题

                         补充headers[:]方法

设定
 Action Mailer的设定参数

 

 delivery_method

 发送邮件的方法

 ● 默认: :smtp

 ● 可设定值

 

 :smtp  经smtp服务器发送
 :sendmail  用sendmail命令
 :file  把邮件作为文件保存
 :test

 测试模式

 (把邮件已数组形式返回)

 

 default_options  默认的邮件header
 interceptors  应用的interceptor
 perform_deliveries

 delivery方法是否实际发送邮件

 ● 默认: true

 raise_delivery_errors

 邮件发送失败时是否抛出error

 ● 默认: true

 show_previews

 mail preview功能是否有效

 ● 默认: development环境 true

           test/product环境  false

 smtp_settings

 smtp模式下的设定 

 address

 smtp服务器的主机名

 ● 默认 localhost

 port

 smtp服务器的port

 ● 默认: 25

 domain

 HELO domain

 ● 默认: localhost.localdomain

 user_name  用户名
 password  密码 
 authentication

 认证方法

 :plain, :login, :cram_md5

 

 sendmail_settings

 sendmail模式下的设定

 location

 命令的位置

 ● 默认: /usr/bin/sendmail

 arguments

 sendmail命令的选项

 ● 默认: -i -t

 

 file_settings

 file模式下的设定

 location

 信息的保存位置

 ● 默认: #{Rails.root}/tmp/mails

   

 

   

 

   
发送邮件
 生成mailer  
rails generate mailer name method [options]

 

 name  mailer名
 method  方法名
 options

 

 -f --force  已经存在的文件则覆盖
 -p --pretend  不生成文件,只是测试运行结果
 -q --quiet  不显示过程(进度)
 -s --skip  存在同名文件则跳过该文件

 

 例:

rails g mailer learning_mailer::sample t1 t2 t3 t4

 

 

 编辑mailer

 

 default

 设定此mailer的默认header

  default header: value [, ...] 

 to, cc, bcc  收件人,抄送,密送
 subject  邮件内容 
 from  发信人
 date  发送日期时间
 reply_to  回复时接收的邮箱

 x_priority/

 x_msmail_priority

 邮件的重要度

 (x_priority的1, x_msmail_priority的High为最高)

 content_type

 内容种类

 ● 默认: text/plain

 charset

 使用的字符码

 ● 默认: UTF-8

 parts_order

 复杂内容的插入顺序?

 ● 默认: ["text/plain", "text/enriched", "text/html"] 

 mime_version  MIME的version
   

 

 mail

 发送邮件
 (相当于render)

 

mail headers

 

  headers

 header信息

 参见default

   

 

 headers[:field]

 设定headers, 可以取代mail

 

 编辑view 

 

 和controller的view的不同:

 

 url_for

 mailer里没有绝对路径,故需指定host

url_for host: "www.xxx.com", controller: "a", action: "b"

 

   

 

   

 

   
   
多种格式发送邮件
 html邮件  html.erb
 附加文件

 

attachments['file.file'] = File.read(Rails.root.join(....))

 

 

 layout   TODO
   
   
preview邮件
   test/mailers/previews/里下测试代码
   
   
   
   
发送前进行处理
   类名随意, 推荐最后Interceptor
 条件

 实现self.delivering_email(mail)方法

 mail是Mail::Message类

   
   
   
mailer的unit test
   TODO
   
   
   
   
posted @ 2019-10-01 09:16  懒虫哥哥  阅读(167)  评论(0编辑  收藏  举报