読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

zipファイルをメールで送付するサンプル

TMail+Net::SMTPで、zipファイルをメールで送付するサンプルです。(※添付ファイルとして送付しているわけではないのでご注意。メールの本文がzipです。)
処理としては、

  • メールのbodyとして読み込んだファイルをBase64エンコードしたものを指定。
  • content_typeなどのヘッダ情報を追加で設定。

後は普通にメールを送信すればOK。

require 'rubygems'
require 'tmail'
require "tlsmail"
require "base64"


# tmailでメールを作成
mail = TMail::Mail.new
mail.to = 'foo@var.com'
mail.from = 'foo@gmail.com'
mail.subject = 'test mail2'
mail.date = Time.now
mail.mime_version = '1.0'

# 本文をbase64でエンコードしたzipにする。
mail.body = Base64.encode64 IO.read( "./test.zip" )
mail.set_content_type 'application','zip','name'=>"test.zip"
mail.set_content_disposition 'attachment','filename'=>"test.zip"
mail.transfer_encoding = 'base64'
#puts mail.to_s

Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
Net::SMTP.start( "smtp.gmail.com",  587, "localhost.localdomain", "foo@gmail.com", "<パスワード>", "plain"){ |smtp| 
  smtp.sendmail(mail.encoded, mail.from, mail.to) 
}

GMailにて添付ファイルをダウンロードして問題なく解凍できることは確認済みです。

参考サイト

以下のサイトの情報を参考に作成しました。ありがとうございます。