Outlook メッセージの管理

メールを HTML として保存

Aspose.Email は、メッセージを HTML 形式でエクスポートする際に、メールリソースを相対パスで保存できるようにします。この機能により、出力 HTML ファイル内でのリソースリンク方法に柔軟性が増し、保存されたメールをさまざまなシステムで共有・表示しやすくなります。相対パスでリソースを保存するには、以下を使用します HtmlSaveOptions.UseRelativePathToResources プロパティで設定できます。デフォルト値は false(リソースは絶対パスで保存)です。true に設定すると、リソースは相対パスで保存されます。

相対パスを使用した HTML ファイルはよりポータブルで、ホスティング環境のファイル構成に関係なく正しく表示できます。要件に応じて絶対パスと相対パスを選択できます。リソースのカスタムパスは、 ResourceHtmlRendering イベント。

以下のコードサンプルは、リソースへのデフォルト相対パスでメールを保存 する方法を示します:

var msg = MapiMessage.Load(sourceFileName);

var htmlSaveOptions = new HtmlSaveOptions
{
    ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
    UseRelativePathToResources = true
};

msg.Save(Path.Combine("target_files"), htmlSaveOptions);

この場合、リソースは .html ファイルと同じパスの [html file name]_files フォルダーに保存され、HTML は相対パスでリソースを参照します。

以下のコードサンプルは、リソースへの絶対パスで保存 する方法を示します:

var msg = MapiMessage.Load(sourceFileName);

var htmlSaveOptions = new HtmlSaveOptions
{
    ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
    UseRelativePathToResources = false
};

msg.Save(Path.Combine("target_files"), htmlSaveOptions);

最初のケースと同様に、リソースはデフォルトで [html file name]_files フォルダーに保存されますが、HTML は絶対パスでリソースを参照します。

次を使用して ResourceHtmlRendering イベントを使用すると、リソースのカスタム相対パスまたは絶対パスを設定できます。パスをカスタマイズする際に ResourceHtmlRendering イベントハンドラ、そして UseRelativePathToResources が true に設定されている場合、相対パスを割り当てる必要があります PathToResourceFile 正しい参照を確保するためのプロパティです。

以下のコードサンプルは、ResourceHtmlRendering イベントを使用したカスタム相対パス の方法を示します

var msg = MapiMessage.Load(sourceFileName);

var htmlSaveOptions = new HtmlSaveOptions
{
    ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
    UseRelativePathToResources = true
};

htmlSaveOptions.ResourceHtmlRendering += (o, args) =>
{
    if (o is AttachmentBase attachment)
    {
	    // Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
        args.PathToResourceFile = $@"images\{attachment.ContentType.Name}";
    }
};

msg.Save(Path.Combine(targetPath, "A Day in the Park.html"), htmlSaveOptions);

MSG を MIME メッセージに変換

Aspose.Email API は、MSG ファイルを MIME メッセージに変換する機能を提供します: ToMailMessage メソッド。

メッセージ変換および読み込みのタイムアウトを設定

以下の機能により、変換および読み込みプロセスのタイムアウト(ミリ秒)を設定できます:

以下のコードサンプルは、メッセージ変換中にタイムアウトを設定する方法を示します:

var options = new MailConversionOptions();
// Set the timeout to 5 seconds
options.Timeout = 5000;

options.TimeoutReached += (object sender, EventArgs args) =>
{
    string subj = (sender as MailMessage).Subject;
	 // Set a flag indicating the timeout was reached
    isTimedOut = true;
};

var mailMessage = mapiMessage.ToMailMessage(options);

RTF 本文を保持した MSG から EML への変換

RTF 本文を保持したまま MSG ファイルを EML に変換する方法は2通りあります:

両方のプロパティは、MailMessage の RTF 本文を保持するかどうかを示す値を取得または設定します。

以下のコードスニペットは、MSG ファイルを EML に変換し、RTF 本文を保持する方法を示します:

var loadOptions = new MsgLoadOptions
{
    PreserveRtfContent = true
};

var eml = MailMessage.Load("my.msg", loadOptions);
var conversionOptions = new MailConversionOptions
{
    PreserveRtfContent = true
};

var msg = MapiMessage.Load("my.msg");

var eml = msg.ToMailMessage(conversionOptions);

Outlook テンプレート ファイル(.OFT)の取り扱い

Outlook テンプレートは、同じメールメッセージを繰り返し送信したい場合に非常に便利です。毎回ゼロからメッセージを作成する代わりに、まず Outlook でメッセージを作成し、Outlook テンプレート(OFT)として保存します。その後、メッセージを送信する必要があるときは、テンプレートから作成でき、本文や件名の同じテキストを記入したり、書式設定を行ったりする手間が省けます。Aspose.Email の MailMessage クラスは Outlook テンプレート(OFT)ファイルをロードして読み取るために使用できます。Outlook テンプレートが次のインスタンスにロードされたら MailMessage クラスを使用すると、送信者、受信者、本文、件名、その他のプロパティを更新できます。プロパティを更新した後:

  • 次を使用してメールを送信します: SmtpClient クラスまたは
  • メッセージを MSG として保存し、Microsoft Outlook を使用してさらに更新/検証を行います。

以下のコードサンプルでは、次を行います:

  1. テンプレートを次を使用してロードします: MailMessage クラス。
  2. いくつかのプロパティを更新します。
  3. メッセージを MSG 形式で保存します。

以下のコードスニペットは、OFT ファイルをロードし、メッセージを更新して MSG 形式で保存する方法を示します。

MSG ファイルをテンプレートとして保存

以下のコードスニペットは、Outlook の MSG ファイルをテンプレートとして保存する方法を示しています。

MAPI メッセージタイプの判定(OFT または MSG)

ファイルから MapiMessage オブジェクトをロードする際、ロードされたメッセージがテンプレートファイルか通常のメールファイルかを判定する必要がある場合があります。これには、 IsTemplate プロパティ( MapiMessage クラスを使用すると、メールがテンプレートかどうかを正確に検出できます。この機能は、アプリケーションやシステム内でさまざまなタイプのメールファイルを扱う際に有用です。

以下のコード例は、MapiMessage が OFT か MSG かを判定する方法を示しています。

var msg = MapiMessage.Load("message.msg");
var isOft = msg.IsTemplate; // returns false

var msg = MapiMessage.Load("message.oft");
var isOft = msg.IsTemplate; // returns true

MapiMessage または MailMessage を OFT 形式で保存

この SaveOptions クラスは、MailMessage または MapiMessage を特定の形式で保存する際に追加オプションを指定できるようにします。

次のコードサンプルは、メッセージをOFT形式で保存する方法を示しています。

// Save the MailMessage to OFT format
using (var eml = MailMessage.Load("message.eml"))
{
    eml.Save("message.oft", SaveOptions.DefaultOft);
	
	// or alternative way #2
	var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    eml.Save("message.oft", saveOptions);
	
	// or alternative  way #3
	saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    eml.Save("message.oft", saveOptions);

}

// Save the MapiMessage to OFT format
using (var msg = MapiMessage.Load("message.msg"))
{
    msg.Save("message.oft", SaveOptions.DefaultOft);
	
	// or alternative way #2
	var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    msg.Save("message.oft", saveOptions);
	
	// or alternative  way #3
	saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    msg.Save("message.oft", saveOptions);
}

デジタル署名されたメッセージの管理

Aspose.Email は完全な S/MIME メールオブジェクトアルゴリズムを実装しています。これにより、API はフォーマット間でメッセージを変換する際にデジタル署名を保持する完全な機能を持ちます。

EML から MSG への変換時に署名を保持

Aspose.Email は EML から MSG への変換時にデジタル署名を保持します。以下のコードスニペットは、EML から MSG へ変換する方法を示しています。

MSG から EML への S/MIME メッセージ変換

以下のコードスニペットに示すように、Aspose.Email は MSG から EML への変換時にデジタル署名を保持します。

安全なメールの署名をチェック

MapiMessage オブジェクトの署名をチェックするために利用できる機能は以下の通りです。

以下のコードサンプルは、機能をプロジェクトに実装する方法を示しています。

var msg = MapiMessage.Load(fileName, new EmlLoadOptions());
var result = new SecureEmailManager().CheckSignature(msg);

var certFileName = "cert.pfx";
var cert = new X509Certificate2(certFileName, "pass");
var eml = MapiMessage.Load(fileName);
var store = new X509Store();
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();

var result = new SecureEmailManager().CheckSignature(eml, cert, store);

MapiMessage から署名を削除

より高い互換性のために、 MapiMessage.RemoveSignature メソッドと MapiMessage.IsSigned プロパティは、メッセージからデジタル署名を削除するために使用されます。

以下のコードスニペットは、これらの機能をプロジェクトに実装する方法を示しています。

var msg = MapiMessage.Load(fileName);

if (msg.IsSigned)
{
    var unsignedMsg = msg.RemoveSignature();
}

証明書で MapiMessage を復号化

暗号化された MAPI メッセージ(encrypted MAPI messages)があり、証明書に保存されたプライベートキーを使用して復号する必要がある場合、以下の Aspose.Email の機能が役立ちます:

以下のコードスニペットは、暗号化された MAPI メッセージを扱う方法を示しています:

var privateCert = new X509Certificate2(privateCertFile, "password");
var msg = MapiMessage.Load("encrypted.msg");

if (msg.IsEncrypted);
{
    var decryptedMsg = msg.Decrypt(privateCert);
}

MSG ファイルのカラーカテゴリーを設定

カラーカテゴリは、メールメッセージに重要度やカテゴリを付与するものです。Microsoft Outlook では、ユーザーがメールを区別するためにカラーカテゴリを割り当てることができます。カラーカテゴリを操作するには、次を使用します: FollowUpManager. それは次のような関数を含みます AddCategory, RemoveCategory, ClearCategories および GetCategories.

  • AddCategory 受け取ります MapiMessage 引数としてカラーカテゴリ文字列(例:"Purple Category" または "Red Category")を受け取ります。
  • RemoveCategory 受け取ります MapiMessage メッセージから削除するカラーカテゴリ文字列です。
  • ClearCategories メッセージからすべてのカラーカテゴリを削除するために使用されます。
  • GetCategories 特定のメッセージからすべてのカラーカテゴリを取得するために使用されます。

以下の例は、次のタスクを実行します:

  1. カラーカテゴリを追加します。
  2. 別のカラーカテゴリを追加します。
  3. すべてのカテゴリの一覧を取得します。
  4. すべてのカテゴリを削除します。

MSG ファイルのフォローアップ情報にアクセス

Aspose.Email API は、送信または受信したメッセージからフォローアップ情報にアクセスする機能を提供します。メッセージファイルから読了確認、配信読了確認、および投票結果情報を取得できます。

開封確認と配信確認情報の取得

以下のコードスニペットは、読了確認および配信確認情報の取得方法を示しています。

転送および返信メッセージの作成

Aspose.Email API は、転送および返信メッセージの作成と書式設定機能を提供します。 ReplyMessageBuilder および ForwardMessageBuilder API のクラスは、それぞれ返信メッセージと転送メッセージの作成に使用されます。Reply または Forward メッセージは、以下のモードのいずれかを使用して作成できるよう指定できます。 OriginalMessageAdditionMode 列挙型です。この列挙型には次の値があります:

  • OriginalMessageAdditionMode.None - 元のメッセージは応答メッセージに含まれません。
  • OriginalMessageAdditionMode.Attachment - 元のメッセージが応答メッセージに添付ファイルとして含まれます
  • OriginalMessageAdditionMode.Textpart - 元のメッセージがテキストとして返信メッセージの本文に含まれます

返信メッセージの作成

以下のコードスニペットは、返信メッセージの作成方法を示しています。

転送メッセージの作成

以下のコードスニペットは、転送メッセージの作成方法を示します。