作成日: 2013/09/10 最終更新日: 2014/10/06
文書種別
使用方法
詳細
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)
◎サンプルコード(C#)
DecodeToMemoryプロパティを設定して添付ファイルをメモリ上に保存すると、Attachment.Contentプロパティは null (VBでは Nothing) を返します。このため、Attachment.Content.MoveToメソッドは使用できません。この場合、添付ファイルは Attachment.GetContentStreamメソッドで取得します。
◎サンプルコード(VB)
◎サンプルコード(C#)
[初版(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
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);
}
}
{
using (System.IO.FileStream f = new System.IO.FileStream(att.FileName, IO.FileMode.Create))
{
att.GetContentStream.CopyTo(f);
}
}
旧文書番号
36499