@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

メモリ上のファイルのメール添付について

1
投稿者投稿内容
べんとろえだ
会議室デビュー日: 2006/12/08
投稿数: 10
投稿日時: 2006-12-15 12:36
いつもお世話になっております。
下記についてご教示頂けますでしょうか。
メモリ上のエクセルデータをメール添付したいのですが、可能でしょうか?
(送信ファイルを残さないために、PG内でDBからエクセルを作成し、それをディスク保存せずに添付したい)

MailMessage.Attachments.Add(Attachment) とする際、
Attachment= New Attachment(param) で、
param には実ファイル名(string)を指定す以外に System.IO.Stream も指定できるかと思いますが、それを利用すれば可能でしょうか?(エクセル形式なので無理そうですが・・・)

一旦実ファイルを作成し、送信後削除する、といった方法しかないでしょうか?

google 検索していて見つけましたが、下記の参照記事URLの「API関数一覧→■SMTPのAPI」にある「smtpc_addref_attach_mem」と同じ処理が .net でできないかと思っています。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-12-15 12:42
試してないですけど、MemoryStream使えばいいのではないでしょうか?
そもそもメモリ上のエクセルデータってどんな形式で保持しているのでしょう?
べんとろえだ
会議室デビュー日: 2006/12/08
投稿数: 10
投稿日時: 2006-12-15 13:31
レスありがとうございます!
Excel.Application を使用し、
Workbooks.Add で新規作成後、通常なら
SaveAs などで保存すると思うのですが、
SaveAs をせずに添付できないものかと・・・。

イメージ的にはこんな感じなのですが・・・
Dim xlBook As Excel.Workbook = xlApp.Workbooks.Add()
・・・ xlBook の Cells 操作でシート作成 ・・・
Attachment= New Attachment(xlBook)
MailMessage.Attachments.Add(Attachment)
・・・ セーブせずに ・・・
xlBook.Close()
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-12-17 17:22
 Windows アプリなのか、Web アプリなのか。

 ファイルを残さない=保存して送信して削除、ではないのか?

_________________
1

スキルアップ/キャリアアップ(JOB@IT)