GmailのSMTPサーバーを使う

Ruby1.8系のnet/smtpではTLSが使えないが、1.9系では使えるらしい。
しかし1.9系のsmtpに置き換えるようなパッケージがgemに存在することを知った。

gem install tlsmail

これをrequireすると有効になる。
ActionMailerの練習もかねて作ってみた

require "rubygems"
require "tlsmail"
require "action_mailer"

class Gmail < ActionMailer::Base
  def message(s = "", b = "", f = nil)
    fail StandardError, "no message" if s.empty? and b.empty?

    recipients "to"
    from "from"
    subject s
    body b
    attachment(:content_type => "application/octet-stream",
               :body => File.read(f),
               :filename => File.basename(f)) if f and FileTest.file?(f)
  end
end

Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
ActionMailer::Base.smtp_settings = {
  :address => "smtp.gmail.com",
  :port => "587",
  :domain => "localhost",
  :user_name => "user",
  :password => "password",
  :authentication => :plain
}

Gmail.deliver_message("test", "test", "test.rb")

Gmailのサーバーが使えると、色々便利ですね。