第36个标记 » ROR发送邮件

     喜马拉雅的天空

ROR发送邮件

Confach 发表于 August 21, 2007 8:53 pm

版权信息 :严禁转载, 若想推荐或收藏,请用链接的形式.

网址:http://www.36sign.com/blog/working/send-email-with-ror.html

用ROR (Ruby On Rails)发送邮件是一个老话题,但是Google一下,会发现很多人都在抱怨无法发送出去,我自己也经历过类似的情况.

官方给出了一篇文档,即How To Send Email With ActionMailer.遗憾的是仍然有很多人说根据该文档配置之后还是发不出去.我也是参考了该文档,最后成功了.总结一下,如果不成功,很有可能是配置的问题.

ROR是利用ActionMailer来发送的,而且内部采用Tmail.先看看我的配置:

代码
  1. # Include your application configuration below  
  2. ActionMailer::Base.perform_deliveries = true  
  3. ActionMailer::Base.raise_delivery_errors = true  
  4. ActionMailer::Base.default_charset = "utf-8"  
  5. ActionMailer::Base.server_settings = {  
  6.     :address => "mail.xxxx.com",  
  7.     :port => 25,  
  8.     :domain => "www.xxxx.com",  
  9.     :user_name => "admin@xxxx.com",  
  10.     :password => "password",  
  11.     :authentication => :login  
  12.     }  

以上配置非常简单,无非就是配置了邮件服务器的状况,注意一下认证方式就可以了.

根据以上的配置,是可以发送的,也就是官方给的文档关于SMTP是没有错的.

如果按照上面的还是不能发送,首先检查一下是否正确配置改文件.另外检查一下发送人,即from是否正确?何谓正确?邮件地址的域名不要是localhost,例如admin@localhost.com 是不正确的.也正因为此,我自己就吃了一点亏,因为使用http://localhost:3000 来测试的,而from地址优势根据该URI来判断的.

至于带有TLS或认证的,参考官方文档的Sending emails with TLS and/or authentication-only SMTP servers这一部分,据目前了解的情况看,有人成功发送.

其实就是这么简单,只不过出现一点状况,会令人头痛,幸好Rails提供了源代码.

令人欣慰的是,如果你的Rails程序部署在Linux/Unix系统上,而且已经安装了sendmail,只需要将邮件的delivery方式设置为sendmail即可。最后摘录rails的sendmail代码:

ruby 代码
 
  1. def perform_delivery_sendmail(mail)  
  2.        IO.popen("#{sendmail_settings[:location]} #{sendmail_settings[:arguments]}","w+"do |sm|  
  3.          sm.print(mail.encoded.gsub(/\r/, ))  
  4.          sm.flush  
  5.        end  
  6.     end  

 

 



1个评论 »

1.   wxianfeng 发表于 November 18,2009

新版本应该是 smtp_settings

本文评论的RSS · TrackBack URI

发表评论