バリケンのRuby日記 RSSフィード

2008-01-10

[] Ruby 1.9でGMailでメールを送る(1)  Ruby 1.9でGMailでメールを送る(1) - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  Ruby 1.9でGMailでメールを送る(1) - バリケンのRuby日記  Ruby 1.9でGMailでメールを送る(1) - バリケンのRuby日記 のブックマークコメント

Ruby 1.9ではNet::SMTPを使ってGMailでメールを送れるようになった、ってどこかで聞いたような気がしたけど、うまくいくかな?

# -*- coding: UTF-8 -*-

require 'net/smtp'

MESSAGE = <<EndOfMail
From: Your Name <your@mail.address>
To: Dest Address <to@some.domain>
Subject: test mail

This is a test mail.
EndOfMail

smtpserver = Net::SMTP.new('smtp.gmail.com', 587)
smtpserver.enable_tls(nil)

smtpserver.start('gmail.com', 'your.account', 'password', :login) do |smtp|
  smtp.send_message(MESSAGE, 'your@mail.address', 'to@some.domain')
end

実行してみるよ。

$ ruby1.9 smtpsample.rb 
/opt/ruby1.9/lib/ruby/1.9.0/net/smtp.rb:306:in `raise': openssl library not installed (RuntimeError)
        from /opt/ruby1.9/lib/ruby/1.9.0/net/smtp.rb:306:in `enable_tls'
        from smtpsample.rb:15:in `<main>'
$ 

あれー、opensslがない、って言われちゃった。Ruby1.9のコンパイルのときに、何かオプションが必要だったのかなあ?

追記:Ruby 1.8系でもtlsmailを使えば、Net::SMTPを使ってGMailでメールを送れるみたい。tlsmailはgemでインストールできるよ。

# gem install tlsmail

スクリプトは次のような感じで。

require 'net/smtp'

require 'rubygems'
require 'tlsmail'

MESSAGE = <<EndOfMail
From: Your Name <your@mail.address>
To: Dest Address <to@some.domain>
Subject: test mail

This is a test mail.
EndOfMail

smtpserver = Net::SMTP.new('smtp.gmail.com', 587)
smtpserver.enable_tls(OpenSSL::SSL::VERIFY_NONE)

smtpserver.start('gmail.com', 'your.account', 'password', :login) do |smtp|
  smtp.send_message(MESSAGE, 'your@mail.address', 'to@some.domain')
end
トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20080110