スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

action_mailerを使ってrubyでメール送信

action_mailerを使って、手軽にメールを送信するユーティリティです。
文字コードがUTF-8のメールを送信します。


# coding: utf-8
require 'action_mailer'

module UvUtil
class MyMailer < ActionMailer::Base
def sendMessage(fromAddress, toAddress, mySubject, myBody)
from fromAddress
recipients toAddress
subject mySubject
body myBody
end
end

class Mail
DEFAULT_HOST = 'localhost'
DEFAULT_PORT = 25
DEFAULT_FROM = ''
DEFAULT_SUBJECT = ''
DEFAULT_CONTENT = ''
DEFAULT_TO = ''

def initialize(params={})
@host = params[:host] ? params[:host] : Mail::DEFAULT_HOST
@port = params[:port] ? params[:port] : Mail::DEFAULT_PORT
@from = params[:from] ? params[:from] : Mail::DEFAULT_FROM
@subject = params[:subject] ? params[:subject] : Mail::DEFAULT_SUBJECT
@content = params[:content] ? params[:content] : Mail::DEFAULT_CONTENT
@to = params[:to] ? params[:to] : Mail::DEFAULT_TO
ActionMailer::Base.smtp_settings = {
:address => @host,
:port => @port,
:enable_starttls_auto => false
}
end

def send_mail(params={})
from = params[:from] ? params[:from] : @from
to = params[:to] ? params[:to] : @to
content = params[:content] ? params[:content] : @content
subject = params[:subject] ? params[:subject] : @subject
error = params[:error] ? params[:error] : nil
content += error.to_s + '\n' + error.backtrace.to_s if error

MyMailer.sendMessage(from, to, subject, content).deliver
end

def send_mail_thread(params={})
Thread.start do
send_mail(params)
end
end

end
end


使い方はこんな感じです。
mail = UvUtil::Mail.new({:to => 'test@example.com', :subject => 'aaa', :from => 'noreply@example.com'})
mail.send_mail({:content => 'test'})

newする時にデフォルト値を与えて、send_mailメソッドでは必要なものだけ渡します。
例外も:errorで渡すとメッセージとスタックトレースを表示します。
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。