Ruby/TMail

最終更新: 2010-08-10 (火) 14:30:13 (2385d)

目次 Edit

バージョンと製造年月日 Edit

2009-12-25

TMail? Edit

よくわかってなかったんだけど、TMailってのはメールを入れる入れ物なんだね。
送信したり受信したりする機能はなくて、単純にメールの構成要素を詰めたり出したりするための便利なメソッドがある入れ物

メールを送る Edit

単に送る Edit

require 'net/smtp'
require 'tmail'
require 'base64'

mail = TMail::Mail.new

mail.to = 'moge@moge.jp'
mail.from = 'hoge@hoge.jp'
mail.subject = 'test mail'
mail.date = Time.now
mail.mime_version = '1.0'
mail.set_content_type 'text', 'plain', {'charset'=>'iso-2022-jp'}
mail.body = 'This is test mail.'

#送信
Net::SMTP.start("smtp.hogehoge.jp", 587, "smtp.hogehoge.jp", "aideeee", "pasuwado") do |smtp|
  smtp.sendmail(mail.encoded, mail.from, mail.to)
end

添付ファイル付きで送る Edit

添付ファイル付きのメールというのは、内部ではメールに本文の内容と、添付ファイルの内容が2つ添付されている状態と言える。

なので送るための入れ物としてのメールと本文のメールと添付のメールで3つのメールを作って組み合わせる

require 'net/smtp'
require 'tmail'
require 'base64'

#入れもの
mail = TMail::Mail.new

mail.to = 'moge@moge.jp'
mail.from = 'hoge@hoge.jp'
mail.subject = 'test mail'
mail.date = Time.now
mail.mime_version = '1.0'
mail.set_content_type 'multipart', 'mixed', {"boundary" => "HogeHogeHogeHoge"}

#本文
mail_body = TMail::Mail.new
mail_body.set_content_type 'text', 'plain', {'charset'=>'iso-2022-jp'}
mail_body.body = 'ほげ'
mail.parts.push(@mail_body)

# 添付ファイル
attach = TMail::Mail.new
attach.body = Base64.encode64 File.open('foo.jpg', "rb").read
attach.set_content_type 'image','jpg','name'=>'foo.jpg'
attach.set_content_disposition 'attachment','filename'=>'foo.jpg'
attach.transfer_encoding = 'base64'

# 添付
mail.parts.push(attach)

#送信
Net::SMTP.start("smtp.hogehoge.jp", 587, "smtp.hogehoge.jp", "aideeee", "pasuwado") do |smtp|
  smtp.sendmail(mail.encoded, mail.from, mail.to)
end

日本語ファイル名のファイルを添付 Edit

ファイル名の指定の部分でファイル名をsubjectのようにiso-2022にエンコードする。

参考サイト Edit

コメント Edit

  • おかげで添付ファイル付メールの送信ができました<m(__)m> -- 通りすがり? 2010-05-17 (月) 23:03:08

タグ Edit

Tag: Ruby メール

リロード   new Edit 凍結 差分 Upload 複製 名前変更   Home Page list Word Search Recent Update バックアップ Referer   Help   最終更新のRSS
Last-modified: 2010-08-10 (火) 14:30:13 (2385d)