环境:ruby1.8.6 + rails 2.1.0 + windows
今天在整rails发送邮件,国内已经有人总结过了,写了两个demo,这里先来第一个,最简单的发送邮件demo
我用的是gmail的smtp方式发送邮件,demo步骤:
1,cd进入rails工程,安装rails的gmail支持
2,把 smtp_tls.rb ,并将其放到项目的lib目录下
3,配置config/environment.rb文件
require 'smtp_tls' # 放到require部分
ActionMailer::Base.delivery_method = :smtp #以下放到文件的最后(end后)
ActionMailer::Base.default_charset = "UTF-8"
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "xxx.com", # 这里先不管它
:authentication => :login, # 如果不行的话,换成 :plain 试试
:user_name => "wang.fl1429", # 你的gmail账户名
:password => "123456", #你的gmail密码
}
|
4,model
class Confirm < ActionMailer::Base #注意这里继承的是ActionMailer
def send(sent_at = Time.now)
@subject = 'helloWorld' #邮件标题
@body = {'name' => '测试'}
@recipients = 'fl_1429@126.com' #收件人地址
@from = 'liverpool_long@tom.com' #发件人地址,没起到作用
@sent_on = sent_at #发送时间
@headers = {}
end
end
|
5,controller
class ConfirmController < ApplicationController
def send_mail
Confirm.deliver_send()
render :text=> "success!"
end
end
|
6,view (views/confirm/send.rhtml) 注意必须是send.rhtml作为mail的template,不能命名为confirm.rhtml
7,发送mail
http://localhost:3000/confirm/send_mail
注意点:
1,我在开发中遇到 uninitialized constant 异常,是因为把Model名写错了一个字母导致的
2,model中的@from不起作用,发件人地址是environment.rb中配置的邮件地址
3,send.rhtml是发送到邮箱里的template,而非view的template
ref:
http://www.cnblogs.com/sinkzephyr/archive/2008/03/18/1111317.html
http://blog.csdn.net/long0428/archive/2007/11/14/1884586.aspx
http://www.tutorialspoint.com/ruby-on-rails-2.1/rails-send-emails.htm
http://bubble601.spaces.live.com/blog/cns!686a36348ea5ae3f!289.entry
posted on 2009-05-04 18:26
fl1429 阅读(659)
评论(0) 编辑 收藏 所属分类:
Rails