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.deliverJISで送る方法をためしたけど、どうしてもうまくいかなかった。
読む場合
~/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