创建: 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)
|
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 |
|
|
|
|
|
|
|
|