トップ  検索

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";
って感じ

Copyright (c) 2001-2008 Takefumi MIYOSHI, All rights reserved