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