rubyでgmailの送受信をする
1月 18th, 2010
gmailはssl必須なので面倒かと思ったのですが、意外と簡単でした
まずは以下のライブラリを入れましょう
#以下はruby1.8系の場合. ruby1.9系はsmtpがssl対応してるのでtlsmailは要りません
TEXT:
-
sudo gem install tmail tlsmail
tmailはメールをparse、tlsmailはsmtpのssl化をしてくれます
RUBY:
-
require 'rubygems'
-
require 'tmail'
-
require 'tlsmail'
-
require 'net/smtp'
-
require 'net/pop'
-
require 'kconv'
-
-
mail = TMail::Mail.new
-
mail.to = 'recieve@some.domain'
-
mail.from = 'your@gmail.com'
-
mail.subject = '件名'.tojis
-
mail.date = Time.now
-
mail.mime_version = '1.0'
-
mail.set_content_type 'text', 'plain', {'charset => 'iso-2022-jp''}
-
mail.body = 'うんたらかんたら'.tojis
-
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
-
# port = 587はtlsの場合. ruby1.9系でenable_sslしている場合はport = 465になると思われます
-
Net::SMTP.start('smtp.gmail.com', 587, 'localhost.localdomain',
-
'your@gmail.com', 'your_gmail_password') do |smtp|
-
smtp.sendmail(mail.encoded, mail.from, mail.to)
-
puts 'send mail.'
-
end
-
-
Net::POP3.enable_ssl(OpenSSL::SSL::VERIFY_NONE)
-
Net::POP3.start('pop.gmail.com', 995, 'your@gmail.com',
-
'your_gmail_password') do |pop|
-
unless pop.mails.empty?
-
pop.mails.each do |m|
-
mail = TMail::Mail.parse(m.pop)
-
# toutf8はterminalなんかで表示する場合. windowsならtosjis
-
puts "#{mail.from}:[#{mail.subject}] #{mail.body.toutf8}"
-
end
-
end
-
end
マルチバイト文字が入るところには忘れずにtojisしないと文字化けします