zoukankan      html  css  js  c++  java
  • rails3异步发邮件

    actionmailer 3.0 结合ar_mailer_rails3 异步发送邮件

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

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

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

    $  rails g mailer notifier  

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

    class Notifier < ActionMailer::Base
      default :from => "from@example.com"
      
      def signup_notification
        mail(:to => "friend@gmail.com", :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.com",
      :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.com
      :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,你的邮件是否已经发送成功了呢?

  • 相关阅读:
    mp4的视频打开可以播放在页面上无法打开
    滚动到特定位置菜单固定的效果
    第一次作业
    第一次上机作业
    第一次作业
    第二次作业
    第一次练习作业
    第一次作业
    第三周作业
    第一次JAVA上机练习
  • 原文地址:https://www.cnblogs.com/lexus/p/1906041.html
Copyright © 2011-2022 走看看