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