作者giive (lala)
看板Ruby
标题[心得] ActionMailer 初探 : 使用 sendmail 寄信
时间Fri Sep 15 08:56:11 2006
出自我的 Blog
http://lightyror.blogspot.com/2006/09/actionmailer-sendmail.html
Action Mailer 是 Ruby on Rails 上面收发信的机制
不过因为收信实在牵涉到太多东西
我们先不予以探索,只论发信的机制
就算是寄信,也有很多方式
可以用 SMTP Server 来寄
但是也要设定很多东西
身为 Rails Programmer ,而非网管
我们先使用最最最简单的 sendmail 来寄信
测试Sendmail
要用寄信前,请先在命令列上打
sendmail
[email protected]
等到他出现下一行
就可以乱打一些内容
然後按下 Ctrl + D 寄出
麻烦请记住
如果连手动使用 sendmail 都寄不出去
代表你现在的机器寄信机制上面有问题
ActionMailer 更不可能记得出去
如果你的机器上面没有 sendmail 指令
请按照这个网页安装 Postfix
使用 ActionMailer
如果您想要继续看这一章
麻烦请先把上一章测试成功
上一章 sendmail 测试不成功,这一章是不可能成功的
设定
要设定 ActionMailer ,请到 config/enviroments/
修改你现在环境的设定档
ActionMailer::Base.delivery_method = :sendmail
ActionMailer::Base.default_content_type = 'text/html'
第一行是告诉我们寄信的机制是用 sendmail ( 预设是 smtp )
第二行是告诉我们寄信的内容是以 HTML 格式来寄的 (预设是 plain text)
产生 Mailer
Mailer 在 Rails 里面地位跟 Model 一样
我们都是使用
ruby script/generate mailer 你要的mailer名字
来产生 Mailer
填写内容
产生出来的 Mailer 会在 model 层里面产生一个
class MyMail < ActionMailer::Base
end
我们可以加入一些 Method
class MyMail < ActionMailer::Base
def send_mail( user )
# Email header info MUST be added here
@recipients = '
[email protected]'
@from = "
[email protected]"
@subject = "测试标题许功盖"
end
end
我们刚刚的 method 还没有填写内容
如果你眼尖一点
你会发现 Generator 会帮你在 view 里面产生相关 Mailer 的目录
没错
Mailer 里面他也把 MVC 切的清清楚楚的
我们刚刚撰写一个 send_mail method
我们就必须跑到相关的 view 目录下
产生一个 send_mail.rhtml 来撰写信件里面的内容
但是如果我们想在 Mailer View 里面使用一些 变数
我们必须在 Mailer method 加入一些 @ 变数
class MyMail < ActionMailer::Base
def send_mail( user )
# Email header info MUST be added here
@recipients = '
[email protected]'
@from = "
[email protected]"
@subject = "测试标题许功盖"
# Email body substitutions go here
@body["first_name"]='first name'
@body["last_name"]='last name'
end
end
如此 Mailer 撰写就没啥大问题
使用
要怎麽使用他当然是在 controller 里面使用啦
MyMail::deliver_send_mail @user
我们可以发现
我们直接使用 Mailer 而不实体化一个 Mailer Object
并且记住,我们刚刚写了 send_mail method
但是要使用不是直接呼叫 send_mail
而是在前面加入 deliver_ 成为 deliver_send_mail
测试结果
Mailer 预设寄信的 Charset 是 UTF-8,我也测试过标题安放中文
我发现到不管是标题或是内文,都没有中文的问题
算是很方便的机制
--
lighty RoR 是一个介绍 lighttpd , SQLite , Ruby and Rails 的 Blog
http://lightyror.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.96.54