做开发的平时可能需要利用程序连接邮件服务器发送邮件,这样需要一定条件才行的,虽然shitou有自己的邮件服务器可用,还是想试下gmail, 谁让google那么NX呢, 而且gmail也是开放的,为coder提供了很多测试的条件, 今天突然想到想在blog里加入发送文章到邮箱的功能,因为平时shitou就有这种需求,看到好的文章就想收藏下来,慢慢的浏览器的收藏夹都爆掉了,今天就用gmail来实现吧, 语言用的是ruby
因为ruby1.8.*的版本都不支持TLS(就是Transfer Layer Secure)连接加密,而gmail要求必须使用加密连接, 所以就得先解决这个问题啦,可以安装tlsmail gem就行了, 当然前提是你的现有gmail的注册账号啦, 下面是code, smtp_gmail.rb:
#use Unicode$KCODE = 'u'require 'jcode'require 'rubygems'require 'action_mailer'require 'tlsmail' #need install tlsmail gem to support TLS connectNet::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)ActionMailer::Base.smtp_settings = { :address => 'smtp.gmail.com', #default: localhost :port => '25', #default: 25 :user_name => 'mytake6@gmail.com',#login name :password => 'mypwd', #login password :authentication => :login #:plain, :login or :cram_md5}class SimpleMailer < ActionMailer::Base def simple_message(recipient, mail_subject, mail_body) from 'mytake6@gmail.com' recipients recipient subject mail_subject body mail_body endendSimpleMailer.deliver_simple_message 'lilei@16ds.com', 'test mail', 'hello, from script mail'
上面的authentication用:login就行, 因为设置了Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE), 所以在连接时会自动启用TLS的, 这里用的是ActionMailer, 没有使用更底层的封装Net::SMTP, 当然用Net::SMTP也是很简单的, 就不多说了,
现在就可以测试下了
#ruby smtp_gmail.rb
文档: http://agilewebdevelopment.com/plugins/net_smtp_tls_support
2009-01-15 16:40:32, 769 reviews
send to mailbox
just DO NOT support IE