メール送信
ちょっとしたメール送信(自分の携帯へ送信とか)でいちいちメーラを起動するのもめんどくさい。
いろいろ調べて、RubyでSMTPを使ったメール送信なら出来るようになった。
require 'net/smtp' require 'kconv' require 'date' require 'jcode' $KCODE = 'utf8' class Rmail #from,to = [:addr, :name] #Hash def initialize(from, to, subject="タイトル無し") @from = from @to = to @subject = subject @smtp = 'smtp.hoge.com' @port = 25 @user = 'name' @pass = 'passward' @body = "" @head = head end attr_accessor :body #ヘッダメッセージ作成 def head head = "" head << sprintf("From: %s <%s>\n", Kconv.tojis(@from[:name]), @from[:addr]) head << sprintf("To: %s <%s>\n", Kconv.tojis(@to[:name]), @to[:addr]) head << sprintf("Subject: %s\n", Kconv.tojis(@subject)) head << sprintf("Date: %s\n", date) t = DateTime.now.to_s.split(/-|T|:/)[0..-2].join("") head << sprintf("Message-Id: <%s_yashushi@aol.com>\n", t) head end private :head #ヘッダで使用するDate:のフォーマットに合わせた文字列 def date t = Time.now.to_s.split(/ /) sprintf("%s, %s %s %s %s %s (JST)", t[0], t[2], t[1], t[5], t[3], t[4]) end #メッセージ作成 def make_message @mes = @head + "\n\n" + Kconv.tojis(@body) end #メール送信 def send ret = nil Net::SMTP.start(@smtp, @port, @smtp, @user, @pass, :plain) do |smtp| ret = smtp.send_mail(@mes, @from[:addr], @to[:addr]) end #p ret return true if /OK/ =~ ret return false end end from = {} from[:addr] = "hogehoge@hoge.com" from[:name] = "自分" to = {} to[:addr] = "to@hoge.com" to[:name] = "宛先" rmain = Rmail.new(from, to) rmain.body = "テストメール" rmain.make_message rmain.send