net/smtp - メールの送信
Rubyの勉強
とりあえずマニュアルのサンプルを殆どそのまんま実行。ヘッダ部の日本語のエンコードは無視。いきなり送信はできないみたいなのでPOPbeforeSMTPを行って送信しています。
ヘッダ部のTo:やらFrom:のアドレスには送信にあたって意味がないことがわかった。to_addrにあるアドレスに送信されるんですね、Bcc:なんかがどうやって送信されるのか理解できました。ちなみに送信者の本当のアドレスはX-Apparently-From:にありました。送信自体にはパスワードも使用しないので違う送信アドレスを偽装してできるかとおもったら、さすがにサーバー側で拒否されました(^^ゞ
昨日の受信で文字がjisだったので、送信時の本文も日本語はjisにして送信。
マニュアル:http://www.ruby-lang.org/ja/man/?cmd=view;name=net%2Fsmtp
require 'net/smtp' require 'net/pop' require 'nkf' SMTPSERVER = 'smtp.mail.yahoo.co.jp' SMTP_PORT = 25 FROM_ADDR = 'from_addr' HELO = 'HELO domain' to_addr = ['to_addr1', 'to_addr2', …] POPSERVER = 'pop.mail.yahoo.co.jp' POP_PORT = 110 ACCOUNT = 'user_name' PASSWARD = 'password' is_apop = false # APOPならばtrueにする is_pop_before_smtp = true # POP before SMTPを行う # POP before SMTP if is_pop_before_smtp pop = Net::POP3::APOP(is_apop).auth_only( POPSERVER, POP_PORT, ACCOUNT, PASSWARD ) end # SMTP Net::SMTP.start( SMTPSERVER, SMTP_PORT, HELO ) {|smtp| smtp.ready( FROM_ADDR, *to_addr ) {|f| f.puts 'From: aamine@loveruby.net' f.puts 'To: someone@somedomain.org' f.puts 'Subject: test mail' f.puts 'Message-Id: <20060913124018.1234567890@smtp.loveruby.jp>' f.puts f.puts 'This is test mail.' f.puts NKF.nkf('-Sj', '日本語の本文') } }