Posts Tagged ‘action_mailer’

在 Rails 中用 1and1.com 的邮件服务器发邮件

Monday, April 28th, 2008

之前提到用 Google Apps 提供的邮件服务有每个帐户每天 500 封的限制,有个 tricky 的解决办法是设 100 个帐户在程序中轮训发送,这样一天最多可以发 50000 封。

不过的确没想到在 Rails 中的好办法,只是想可以在 Google Appps 中设置 no-reply1@your-domain.comno-reply100@your-domain.com 这 100 个帐户,在 Rails 项目中设置一个全局量,1-100 循环用来决定发送邮件的帐户,然后在发送邮件的时候修改 ActionMailer::Base.smtp_settings 里面的相应属性。

哪位有更好的方法给提个醒 ;)

后来发现我们在 1and1.com 上面的帐户有 SMTP 的功能,于是乎添加一个 email account,SMTP  相应的设置为:

url: smtp.1and1.com
port: 25
username: your email address
password: your password
可以不开启 SSL

在 Rails 项目的 environment.rb 中设置:

ActionMailer::Base.smtp_settings = {
:address => “smtp.1and1.com”,
:domain  => “1and1.com”,
:port => 25,
:authentication => :login,
:user_name => “no-reply@1kg.cn”,
:password => ‘1000g1000g’
}

发现不灵,发送不成功!Google 后在一篇文章中有看到用 ruby 的 net/smtp 发邮件的例子,用到的是 1and1.co.uk 的 SMTP,想来应该差不多。

看代码注意到 Net::SMTP.start 中有一个参数为 ‘1and1.co.uk’,这个应该是 SMTP 所在的 domain,在 Class::Net::SMTP 的文档中看到这个参数叫做 HELP domain(具体的含义参考 RFC2822

照搬到 Rails 的设置中,给 ActionMailer::Base.smtp_settings 添加一个参数 :domain => 1and1.com 再试,果然发送成功。

send Email via Gmail of Google Apps in your Rails project

Thursday, March 27th, 2008

最近正式推出 Google Apps,提供了 Email/Calendar/Docs/… 一堆功能,最重要的一个就是 Email 了,大家可以在 Gmail 中使用自己的域名。我们为多背一公斤申请了 1kg.org。设置了 MX 记录和 CNAME,不知为何现在 mail/docs/calendar.1kg.org 都无法访问,但是通过 nslookup 查看已经指向 Google 的 server 了。邮件功能倒是工作正常,给自己申请的 suave.su # 1kg.org 可以正常收到邮件。

Google  这服务对我来说最重要的是可以作为邮件服务器为网站发一些欢迎/提醒之类的邮件。 Gmail 的 smtp 使用了 ssl 加密,在 Rails 默认的 ActionMailer 中不支持,需要修正一下,在几篇 Blog 都提到过这个方法,但是原作者的 Blog 访问不了了,找了半天终于搞定,方法如下:

  1. 这段代码保存在 lib/smtp_tls.rb 中
  2. 这段代码保存在 config/environment.rb 中
  3. 重启 server,搞定

不过后来在一篇 Blog 的评论中看到说 Gmail 限制一天只能发 500 封邮件,Google 了一下貌似确有此事,还没有亲自证实。