トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2006-2-8

rubyでsendmail

Rubyスクリプトでメールを送信する方法といえば,
Net::SMTPを使う方法が,よく検索なんかでもひっかかるけど,
sendmailを使いたい事もある.
まあ,sendmail使うっていうのは,
普通にUnixのコマンドを実行することなんだけど,
Rubyだと,パイプ使って,IO::popen

 IO.popen("/usr/sbin/sendmail -t -f 'FROM@FOO.BAR'", "w"){ |smtp|
   smtp.print(mail_header)
   smtp.print("\n")
   smtp.print(mail_message.tojis)
   smtp.print("\n\n")
   smtp.print(".")
   smtp.print("\n")
}

ブロックにしとくと,自動的にcloseしてくれるみたいで便利.

メールの中身は,

 subject = ["テスト".tojis].pack('m').chomp;
 mail_header = ""
 mail_header += "From: " + "FROM@FOO.BAR" + "\n";
 mail_header += "To: " + "TO@FOO.BAR" + "\n";
 mail_header += "Subject: " + "=?ISO-2022-JP?B?#{subject}?=" + "\n";
 mail_header += "MIME-VERSION: 1.0" + "\n"
 mail_header += "Content-Type: text/plain;" + "\n"
 mail_header += "Content-Transfer-Encoding: 7bit" + "\n"
 date = Time.now
 mail_header += "Date: " + date.strftime("%a, %d %b %Y %X %Z") + "\n"
 mail_header += "Message-Id: " + "MESSAGE_ID" + "\n"

 mail_message = "";
 mail_message += "本文" + "\n";

って感じ