好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

rails3异步发邮件

rails3异步发邮件

actionmailer 3.0 结合ar_mailer_rails3 异步发送邮件

3 次投票

jerry  分享于 3 个月 前,  0 条回复 ,  244 次浏览

  Share |

actionmailer 3.0 的用法有所改进,并结合ar_mailer_rails3做异步邮件的发送,是比较方便的一种选择,把邮件都交给后台任务来发送吧.

第一步当然是生成actionmailer的文件了:

 $  rails g mailer notifier   

生成好必要的文件后,我们来看以下actionmailer3新的写法:

 class Notifier < ActionMailer::Base
  default :from => "from@example测试数据"
  
  def signup_notification
    mail(:to => "friend@gmail测试数据", :subject => "New account information")
  end
  
end   

然后在相应的view目录下建一个signup_notification.html.erb文件.

开始安装ar_mailer_rails3,在gemfile里加入

 gem 'ar_mailer_rails3' 

运行:

 $  bundle install   

完成后,就可以来创建临时存储邮件的表了:

 $  rails g ar_mailer_rails3 email   

initializers目录下会生成一个ar_mailer.rb的初始化文件,为了方便起见,我们可以把gmail的smtp配置信息写在这里:

 config_file = "#{Rails.root}/config/smtp_gmail.yml"
raise "Sorry, you must have #{config_file}" unless File.exists?(config_file)

config_options = YAML.load_file(config_file) 
ActionMailer::Base.smtp_settings = {
  :address => "smtp.gmail测试数据",
  :port => 587,
  :authentication => :plain,
  :enable_starttls_auto => true
}.merge(config_options) # Configuration options override default options   

当然,我们首先要在config/目录下创建一个smtp_gmail.yml的gmail用户配置信息,如下:

 --- 
  :user_name: youremail@gmail测试数据
  :password: yourpasword   

ok,配置完成,接下来开启两个终端,一个开console,一个开development.log:

 $  rails console  
$  tail -f log/development.log   

调用刚才写的方法:

 >>  message = Notifier.signup_notification
>>  message.deliver   

日志中是否已经有相关信息了呢? 不急,ar_mailer_rails3 将邮件临时存进了数据库,接下来是启动后台任务的时候了:

 $  ar_sendmail_rails3 

再看看log,你的邮件是否已经发送成功了呢?

查看更多关于rails3异步发邮件的详细内容...

  阅读:51次