糞糞糞ネット弁慶

読んだ論文についてメモを書きます.趣味の話は http://repose.hatenablog.com

RubyからGmailのSMTPサーバ使ってメール送るならpony使うほうが楽だった

Ruby + TMailでGmailのSMTPサーバを使ってメールを送信したいがCcがうまく処理されない→解決した - 糞ネット弁慶
前回はTMail+ruby1.8.9で送っていたが1.9環境でメールを送る必要性が生じた.
しかしruby1.9においては"tmailscanner.so: undefined symbol: rb_get_kcode"とかエラーが出て送れない.これに対応したTMailもあるけどやっぱりだるいのでPonyを使う事にした.
例えばTMailでは前書いたように

def send_mail(params)
  mail = TMail::Mail.new
  mail.to = params[:to]
  mail.cc = params[:cc]
  mail.from = params[:your_gmail_account_at_gmail_com]

  mail.subject = params[:subject].tojis
  mail.body = params[:body].tojis

  mail.mime_version = "1.0"
  mail.set_content_type "text", "plain", {"charset" => "iso-2022-jp"}
  mail.transfer_encoding = "7bit"

  Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
  Net::SMTP.start("smtp.gmail.com", 587, "localhost.localdomain",
                  mail.from, params[:password], "plain") do |smtp|
    smtp.sendmail(mail.encoded, mail.from, mail.to)
  end
end

という感じでNet::SMTPとか直接書くのがなんか怖い.
ponyだとこうなる.良い.

def send_mail(params)
  Pony.mail(:to => params[:to],
            :body => params[:body],
            :subject => params[:subject],
            :via => :smtp, 
            :via_options => {
              :enable_starttls_auto => true,
              :address => "smtp.gmail.com",
              :port => "587",
              :user_name => params[:your_gmail_account],
              :password => params[:password],
              :authentication => :plain,
              :domain => "gmail.com"
            }
            )
end