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.先看看我的配置:
- # Include your application configuration below
- ActionMailer::Base.perform_deliveries = true
- ActionMailer::Base.raise_delivery_errors = true
- ActionMailer::Base.default_charset = "utf-8"
- ActionMailer::Base.server_settings = {
- :address => "mail.xxxx.com",
- :port => 25,
- :domain => "www.xxxx.com",
- :user_name => "admin@xxxx.com",
- :password => "password",
- :authentication => :login
- }
以上配置非常简单,无非就是配置了邮件服务器的状况,注意一下认证方式就可以了.
根据以上的配置,是可以发送的,也就是官方给的文档关于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代码:
- def perform_delivery_sendmail(mail)
- IO.popen("#{sendmail_settings[:location]} #{sendmail_settings[:arguments]}","w+") do |sm|
- sm.print(mail.encoded.gsub(/\r/, ”))
- sm.flush
- end
- end
1. wxianfeng 发表于 November 18,2009
新版本应该是 smtp_settings