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