CentOS 5.x Ruby tmailを使って日本語メール送信

CentOS 5.x 環境で、Rubyで日本語のメール送信を行うための必要な手順をまとめてみました。メール送信には、tmailを使っています。

========================================
1. dlutterリポジトリ追加
========================================

gemsをインストールするためにdlutteリポジトリを追加します。

dlutteリポジトリの設定ファイルを作成します。
# vi /etc/yum.repos.d/dlutter.repo
以下の内容を入力し、ファイルを保存します。

[dlutter]
name=Unsupported RHEL5 packages (lutter)
baseurl=http://people.redhat.com/dlutter/yum/rhel/5/$basearch/
enabled=0
gpgcheck=0

========================================
2. gemsのインストール
========================================

Ruby の標準パッケージ管理システムであるgemsをインストールします。

# yum –enablerepo=dlutter -y install rubygems.noarch

========================================
3. tmailのインストール
========================================

tmailをインストールします。

# gem install tmail

========================================
4. 日本語メール送信サンプルコード
========================================

tmailを使った日本語メールの送信サンプルコードはこんな感じになります。

#!/usr/bin/ruby
require 'rubygems'
require 'tmail'
require 'net/smtp'
require 'kconv'
# tmailを使った日本語メール送信クラス
class JMail
# 初期化処理
def initialize(smtp_server, from_address)
@smtp_server = smtp_server
@mail = TMail::Mail.new
@mail.from = from_address
@mail.reply_to = from_address
@mail.mime_version = '1.0'
@mail.set_content_type 'text', 'plain', {'charset'=>'iso-2022-jp'}
end
# メール送信
def send(subject, body, to_address)
@mail.to = to_address
work = Kconv.tojis(subject).split(//,1).pack('m').chomp
@mail.subject = "=?ISO-2022-JP?B?"+work.gsub('\n', '')+"?="
@mail.body = Kconv.tojis(body)
@mail.date = Time.now
@mail.write_back
Net::SMTP.start(@smtp_server) do |smtp|
smtp.sendmail(@mail.encoded, @mail.from, to_address)
end
end
end
SMTP_SERVER = 'localhost'
TO_ADDRESS = 'to@address'
FROM_ADDRESS = 'from@address'
jmail = JMail.new(SMTP_SERVER, FROM_ADDRESS)
jmail.send('日本語タイトル', '日本語本文', TO_ADDRESS)