添付ファイルがあるメールを受信すると、ローカルに一時ファイルが作成されます。

文書番号 : 36499     文書種別 : 使用方法     登録日 : 2013/09/10     最終更新日 : 2014/10/06
文書を印刷する
対象製品
Secure iNetSuite for .NET 4.0J
詳細
PopサーバーやImapサーバーから添付ファイルがあるメールを取得した場合や、MailMessage.Openメソッドで添付ファイル付きのメールをMailMessageに展開した場合、デフォルトでは添付ファイルは下記の一時フォルダに一時ファイルとして保存されます。

[初版(4.0.2013.0918)とSP1(4.0.2013.1107)の場合]
<ユーザー>¥AppData¥Local¥Temp

[SP2(4.0.2014.0625)以降の場合]
Attachment.Directoryプロパティで指定したフォルダ。
Attachment.Directoryプロパティのデフォルトは、アプリケーションの作業ディレクトリにある"Attachments"サブフォルダです。
<アプリケーションの作業ディレクトリ>¥Attachments

Attachment.Content.MoveToメソッドで任意のローカルフォルダにファイル保存された場合に、一時ファイルは削除されます。

一時ファイルを作成せずに、添付ファイルをメモリ上に格納する場合は、Attachment.DecodeToMemoryプロパティをTrueに設定します。
こちらは静的なプロパティですので、例えばForm_Loadイベントなどで、下記のようなコードで設定します。

◎サンプルコード(VB)
Dart.Mail.Attachment.DecodeToMemory = True


◎サンプルコード(C#)
Dart.Mail.Attachment.DecodeToMemory = true;



DecodeToMemoryプロパティを設定して添付ファイルをメモリ上に保存すると、Attachment.Contentプロパティは null (VBでは Nothing) を返します。このため、Attachment.Content.MoveToメソッドは使用できません。この場合、添付ファイルは Attachment.GetContentStreamメソッドで取得します。

◎サンプルコード(VB)
For Each att As Dart.Mail.Attachment In msg.Attachments
  Using f As New System.IO.FileStream(att.FileName, IO.FileMode.Create)
   att.GetContentStream.CopyTo(f)
  End Using
Next


◎サンプルコード(C#)
foreach (Dart.Mail.Attachment att in msg.Attachments)
{
  using (System.IO.FileStream f = new System.IO.FileStream(att.FileName, IO.FileMode.Create))
  {
    att.GetContentStream.CopyTo(f);
  }
}