rubygemのMailを使う。
インストール
RVMを使って、Ruby 1.9.3をインストールしている。
環境確認(特にgemsetに注意。gemsetごとにrubygemsライブラリがインストールされるので。)
% rvm use ruby-1.9.3-head % ruby -v ruby 1.9.3p5 (2011-11-30 revision 33907) [i686-linux] % rvm gemset list rvm gemset list gemsets for ruby-1.9.3-head (found in /usr/local/rvm/gems/ruby-1.9.3-head) global => rails3 % rvm gemset use rails3
Twitter gemのインストール
% rvmsudo gem install mail % gem list | grep mail actionmailer (3.2.1, 3.1.3, 3.1.1) mail (2.4.1, 2.3.0)
SMTPサーバーを使ってメール送信
25番ポートから認証なしでメールをうけつけてくれるSMTPサーバーが192.168.11.1 にある場合。日本語メールをUTFー8で送るならば以下のようにする。
# -*- coding: utf-8 -*- require 'rubygems' require 'mail' options = { :address => "192.168.11.1", :port => 25 } Mail.defaults do delivery_method :smtp, options end mail = Mail.new do from 'hogehoge@hohoge.jp' to 'noronoro@noronoro.jp' end mail.charset ='utf-8' mail.subject = '日本語タイトル' mail.body = '日本語本文' mail.deliver
JISで送る方法をためしたけど、どうしてもうまくいかなかった。
読む場合
~/Mailにメールが [0-9]* という形式のファイル名で格納されているとき、From欄を抜きだす。
require 'rubygems' require 'mail' begin if ARGV.length != 1 puts "error: please input directory path\n" exit end path = ARGV[0] files = Dir.glob("#{path}/[0-9]*") files.each do |filename| mail= Mail.read(filename) puts "#{filename} #{mail.sender}" end rescue => ex puts ex.message end
使う。
% ruby tmp.rb ~/Mail