使用Gmail Smtp 发送email (rails2.0)

邮件配置:
在enviroment.rb文件中:
Ruby代码 复制代码
  1. ActionMailer::Base.server_settings={
  2. :address=>"smtp.gmail.com",
  3. :port=>587,
  4. :authentication=>:plain,
  5. :user_name=>"gmail­_account",
  6. :password=>"gmail_password"
  7. }

如果按照上面的配置,一般邮件发送会不成功,因为gmail需要ssl方式来登录,ruby的lib中Net:SMTP TLS不支持,所以我们必须去下载一个plugin :
cd /my_rails_app/vendor/plugins
svn export https://openrain.com/opensource/public/rails/plugins/action_mailer_tls action_mailer_tls
为什么不用script/plugin install,我也不知道

下载成功之后,在config/initializers文件夹create一个ruby文件:smptp_gmail.rb
Ruby代码 复制代码
  1. require"smtp_tls"#刚才下载的文件
  2. mailer_config=File.open("#{RAILS_ROOT}/config/mailer.yml")
  3. mailer_options=YAML.load(mailer_config)
  4. ActionMailer::Base.delivery_method=:smtp
  5. ActionMailer::Base.default_charset="utf-8"
  6. ActionMailer::Base.smtp_settings=mailer_options

然后在config文件夹create一个yml文件:mailer.yml
Ruby代码 复制代码
  1. :address:smtp.gmail.com
  2. :port:587
  3. :user_name:gmail­_account
  4. :password:gmail_password
  5. :authentication::plain

最后就可以script/generate mailer MyMailer send
Ruby代码 复制代码
  1. classMyMailer<ActionMailer::Base
  2. defsend
  3. recipients='receiveremailaddress'#接收者email地址
  4. from='youremailaddress'#发送者email地址
  5. subject='iloverubyonrails'
  6. body[:account]='selina'
  7. end
  8. end

开始发送: script/console
MyMailer.create_send #建一个email对象
MyMailer.deliver_send #发送email

最最最后:
其实把email stmp的配置文件写成一个yml文件的好处在于,如果你要改变stmp服务器的配置,直接再写一个yml文件就可以,比如A.yml , B.yml , C.yml ......
然后再File.open("#{RAILS_ROOT}/config/X.yml")

或者你觉得麻烦,也可以直接在enviroment.rb文件中:
Ruby代码 复制代码
  1. require'smtp_tls'
  2. ActionMailer::Base.delivery_method=:smtp
  3. ActionMailer::Base.default_charset="utf-8"
  4. ActionMailer::Base.server_settings={
  5. :address=>"smtp.gmail.com",
  6. :port=>587,
  7. :authentication=>:plain,
  8. :user_name=>"my_gmail­_account",
  9. :password=>"my_gmail_password"
  10. }

你可能感兴趣的:(SVN,Ruby,Rails,Gmail,OpenSource)