メールメッセージにおける TNEF 添付ファイルの取り扱い
TNEF (Transport Neutral Encapsulation Format) は、Microsoft Outlook が添付ファイル内にリッチコンテンツをカプセル化するために使用する独自フォーマットで、主に winmail.dat として保存されます。Aspose.Email API を使用すると、TNEF 添付ファイルを持つメールメッセージを読み取り、添付ファイルの内容を変更できます。そのメールは通常のメールとして、または同じ形式で TNEF 添付ファイルを保持したまま保存できます。本記事では、TNEF 添付ファイルを含むメッセージを操作するためのさまざまなコードサンプルを示します。また、Outlook MSG ファイルから TNEF EML ファイルを作成する方法も示しています。
TNEF 添付ファイル付きメッセージを読む
以下のコードスニペットは、TNEF 添付ファイルを保持したままメッセージを読み取る方法を示しています。
TNEF 添付ファイルなしでメッセージを読む
以下のコードスニペットは、TNEF 添付ファイルを保持せずにメッセージを読み取る方法を示しています。
TNEF 添付ファイルのロードと保存
Aspose.Email for .NET を使用すると、TNEF 添付ファイルを直接オブジェクトにロードできます。 MapiAttachment オブジェクトをファイルパスまたはストリームで使用し、次にオブジェクトを TNEF 形式で保存します。これにより、winmail.dat ファイルの作成や、メールワークフローで Outlook 固有の書式を保持することが可能になります。
API は以下のメンバーを提供します MapiAttachment クラス:
TNEF 添付ファイルのロード
-
static MapiAttachment LoadFromTnef(string fileName) - .dat ファイルから TNEF 添付ファイルをロードします。
-
static MapiAttachment LoadFromTnef(Stream stream) - ストリーム(例:MemoryStream またはファイルストリーム)から TNEF 添付ファイルをロードします。
TNEF 添付ファイルの保存
-
void SaveToTnef(string filename) - MapiAttachment を TNEF ファイルに保存します。
-
void SaveToTnef(Stream stream) - MapiAttachment を TNEF 形式のストリームに保存します。
以下のコードサンプルは、メールメッセージから winmail.dat 添付ファイルを抽出し、保持したうえで、再びメッセージに添付として追加する方法を示しています。
// message.eml contains a winmail.dat attachment, but by default, the attachment is not preserved.
var msg = MapiMessage.Load("message.eml");
var ms = new MemoryStream();
msg.Attachments[0].SaveToTnef("winmail.dat");
ms.Position = 0;
var fromtnefAttachment = MapiAttachment.LoadFromTnef(ms);
msg.Attachments.Add(fromtnefAttachment);
fromtnefAttachment = MapiAttachment.LoadFromTnef("winmail.dat");
msg.Attachments.Add(fromtnefAttachment);
TNEF 添付ファイル内のリソースを更新
以下のコードスニペットは、TNEF 添付ファイル内のリソースを更新し、TNEF 形式を保持する方法を示しています。
TNEF メッセージに添付ファイルを追加
以下のコードスニペットは、TNEF を含むメインメッセージに新しい添付ファイルを追加する方法を示しています。
MSG から TNEF EML を作成
Outlook の MSG には、テーブルやテキストスタイルなどの情報が含まれることがあり、これらを EML に変換すると書式が乱れる可能性があります。そのような MSG ファイルから TNEF メッセージを作成することで、書式を保持し、書式を保ったままメールクライアントで送信することも可能です。 MailConversionOptions.ConvertAsTnef この目的にはプロパティが使用されます。以下のコードスニペットは、MSG から TNEF EML を作成する方法を示しています。
TNEF を作成するには、以下のサンプルコードを使用できます。
TNEF 形式のメッセージを識別
以下のコードスニペットは、メッセージが TNEF かどうかを検出する方法を示しています。
TNEF 形式の添付ファイルを識別
この Attachment.IsTnef このプロパティを使用すると、メッセージ添付が TNEF 形式かどうかを検出できます。
var eml = MailMessage.Load(fileName);
foreach (attachment in eml.Attachments)
{
Console.WriteLine($"Is Attachment TNEF?: {attachment.IsTnef}");
}