Rubyでメール送信(HTMLメール、SMTP認証)

   ブックマークに追加する



以前にRubyでメール送信するプログラムを書きましたが(「RubyでHTTPヘルスチェックプログラムをつくる(mechanizeとnet/smtpを使用する)」)、SMTP認証が必要な場合に送信できないということと、HTMLメールを送信できないということがわかりました。メール送信は良く使用するのでclassで作っておくかとも思い作り直しました。

TMailやActionMailer等もあるのですが、そこまできっちり作らなくてもいい場合用です。

【要件】
  • SMTP認証でメール送信できる
  • HTMLメールが送信できる
  • classとして独立する
作ったソースはこちら。ライセンスはクリエイティブ・コモンズとします。


require 'kconv'
require 'net/smtp'

class SimpleMail
  def initialize(from_address, smtp_server)
    @from_address = from_address
    @smtp_server = smtp_server
    @smtp_port = 25
    @smtp_domain = smtp_server
  end

  def send(to_address, subject, message)
    contents = mail_contents(subject) + "\n"
    contents << message
    Net::SMTP.start(@smtp_server) {|smtp|
      smtp.sendmail( contents, @from_address, to_address )
    }
  end

  def send_html(to_address, subject, message)
    contents = mail_contents(subject)
    contents << 'Content-Type: text/html; charset="iso-2022-jp"\n\n'
    contents << message.sub(/content="text\/html; charset=UTF-8"/, 'content="text/html; charset=iso-2022-jp"').tojis
    Net::SMTP.start(@smtp_server) {|smtp|
      smtp.sendmail( contents, @from_address, to_address )
    }
  end

  def send_auth(to_address, subject, message, account, password)
    contents = mail_contents(subject) + "\n"
    contents << message
    Net::SMTP.start(@smtp_server, @smtp_port, @smtp_domain, account, password) {|smtp|
      smtp.sendmail( contents, @from_address, to_address )
    }
  end

  private
  def mail_contents(subject)
    contents = "Subject: #{subject.tojis}\n"
  end
end

呼び出しは以下のような感じでOK!
結構簡単につくれました。


    # 例:HTMLメール送信
    SimpleMail.new("from@address","smtp_server").send_html("to@address", subject, message)

トラックバック(0)

このブログ記事に対するトラックバックURL(トラックバックは承認後に公開されます)

コメントする

このブログ記事について

このページは、Humが2008年1月20日 20:51に書いたブログ記事です。

ひとつ前のブログ記事は「Rubyのコマンドラインオプション」です。

次のブログ記事は「Windowsでフォルダ・ファイル構成を表示させる(コマンドプロンプト)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたいブログパーツ
フィードメーター - ウェブ-HACKS 「とりあえずやってみよう!」ブログ   
track feed
  • SEO対策 
  • _ 
  • _ 
  •  
  •  

このブログはクリエイティブ・コモンズでライセンスされています。