rubyによるメール転送プログラム
rubyによるメール転送プログラム
リアルタイムに見たいMLがあるのだけど、携帯のメアドは設定で着ませんでした。通常のアドレスで受信して携帯にそのMLだけ転送する仕掛けを作って見ました。
ちなみに、rubyでの初プログラミング.....だと思います(^^)。
準備
メール解析のためにTmailというライブラリを使いました。
http://tmail.rubyforge.org/ からダウンロードしてください。
ダウンロード、解凍後に以下の操作でインストールできます。
ruby setup.rb config ruby setup.rb setup ruby setup.rb install
fedoraの場合、ruby-develをインストールしておく必要があるようです。
プログラム
こんな感じ。
require 'tmail' require 'net/pop' require 'kconv' require "net/smtp" pop = Net::POP3.new( '<POP3サーバのアドレス>', 110 ) pop.start( '<メールユーザー>', '<パスワード>' ) if pop.mails.empty? then puts 'no mail.' else pop.each_mail do |m| maildata = TMail::Mail.parse(m.pop) mailfrom = String( maildata.from ) ecodefrom = Kconv.toutf8( mailfrom ) sendbody = maildata.body if ecodefrom == "<転送対象のメールアドレス>" then sendmail = TMail::Mail.new sendmail.to = "<転送先メールアドレス>" sendmail.from = "<転送時の送信元メールアドレス>" sendmail.reply_to = "<転送時の送信元メールアドレス>" work = Kconv.tojis( sendbody ).split(//,1).pack('m').chomp sendmail.subject = maildata.subject sendmail.body = Kconv.tojis(sendbody) sendmail.date = Time.now sendmail.mime_version = '1.0' sendmail.set_content_type 'text', 'plain', {'charset'=>'iso-2022-jp'}
Net::SMTP.start( "<SMTPサーバのアドレス>" ) do |smtp| smtp.sendmail(sendmail.encoded, sendmail.from,sendmail.to) end m.delete end end end pop.finish
お世辞にも綺麗なプログラムとは言えません(^^;)。いろんなサイトのプログラムを参考に作りました。
Keyword(s):
References: