pop/smtp
トレーニングを兼ねて、ちょっとしたスクリプトを書いてみる。
あるメールアドレスに対して定期的にメールチェックを行い、メールが来ていたら別アドレスに通知を出すというスクリプトを考えているのだが……まだ書きかけ状態。
一応、メールを取ってきたり送信したりはできるようになった。
#!/usr/bin/env ruby require 'net/pop' require 'net/smtp' def get_mail(pop_addr, port_no, account, password) Net::POP3.start(pop_addr, port_no, account, password) {|pop| if pop.mails.empty? then return false else pop.each_mail do |m| # 各メールに対する処理... #print m.header end end } end def create_header(from_addr, to_addr, subject, body) return <<EOM From: #{from_addr} To: #{to_addr} Subject: #{subject} Date: #{Time.now} Message-Id: <#{Time.now.strftime('%Y%m%d%H%M%S.') + \ rand(1000).to_s.rjust(4, '0')}.#{to_addr}> #{body} EOM end def send_mail(smtp_addr, port_no, mail_body, from_addr, to_addr) Net::SMTP.start(smtp_addr, port_no) {|smtp| smtp.send_mail mail_body, from_addr, to_addr } end # main # % で囲まれた部分は、環境に応じて書き換える get_mail('%pop server%', 110, '%account%', '%password%') header = create_header('%from%', '%to%', 'Test mail', 'This is test mail.') send_mail('%smtp server%', 25, header, '%from%', '%to%')