メッセージの読み込みと保存
メールメッセージの読み込みと保存
ファイル形式の検出
Aspose.Email API は、提供されたメッセージファイルのファイル形式を検出する機能を提供します。 DetectFileFormat メソッド( FileFormatUtil この目的に使用できるクラスです。以下のクラスとメソッドを使用して、読み込まれたファイル形式を検出できます。
- FileFormatType クラス
- FileFormatInfo クラス
- FileFormatUtil クラス
- FileFormatUtil.detectFileFormat(Stream) Method
- FileFormatUtil.detectFileFormat(String) Method
以下のコードスニペットは、ファイル形式を検出する方法を示しています。
メールメッセージの読み込み
特定のロードオプションでメッセージを読み込むために、Aspose.Email は以下を提供します。 LoadOptions 以下のように使用できるクラスです:
読み込み時に埋め込みメッセージ形式を保持
メールメッセージの保存と変換
Aspose.Email は任意のメッセージタイプを別の形式に変換することを容易にします。この機能を示すために、この記事のコードはディスクから 3 種類のメッセージを読み込み、別の形式で保存します。基底クラスは SaveOptions およびクラス EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions 保存時の追加設定用 MailMessage 他の形式でメッセージを保存するために使用できます。本記事では、これらのクラスを使用してサンプルメールを以下のように保存する方法を示します。
- EML 形式。
- Outlook MSG。
- MHTML 形式。
- HTML 形式。
メールメッセージの読み込みと保存
以下のコードスニペットは、EML メッセージを読み込み、同じ形式でディスクに保存する方法を示しています。
オリジナル境界を保持してメールメッセージを読み込み・保存
以下のコードスニペットは、EML を読み込み、オリジナルの境界を保持したまま EML として保存する方法を示しています。
TNEF 添付を保持して EML として保存
以下のコードスニペットは、TNEF 添付ファイルを保持したまま EML として保存する方法を示しています。
EML を MSG に保存
以下のコードスニペットは、EML メッセージを読み込み、適切なオプションを使用して MSG に変換する方法を示しています。 SaveOptions.
日付を保持して EML を MSG に保存
この MsgSaveOptions このクラスを使用すると、元のメッセージを日付を保持した Outlook メッセージ ファイル (MSG) として保存できます。以下のコードスニペットは、日付を保持して MSG として保存する方法を示しています。
EML を MHTML として保存
さまざまな MHTML オプションを使用して目的の結果を得ることができます。以下のコードスニペットは、EML メッセージをロードする方法を示しています。 MailMessage そして、UTC 時間のメッセージ日付で MHTML に変換します。
// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.getDefaultMhtml();
// save a message date as UTC date
saveOptions.setPreserveOriginalDate(false);
// Initialize and load an existing EML file
try (MailMessage mailMessage = MailMessage.load(dataDir + "Message.eml")) {
mailMessage.save(outDir + "Message_out.mhtml", saveOptions);
}
EML から保存する際に MHT ヘッダーをグローバルに書式設定
Aspose.Email を使用すると、MHT ヘッダーのグローバル書式設定オプションを利用できます。グローバルオプションはすべての MHT ヘッダーの共通書式を設定します。 MhtSaveOptions インスタンス。この機能は、各インスタンスごとに書式設定を行う必要を回避するために設計されています。 MhtSaveOptions.
以下のメソッドを使用します GlobalFormattingOptions クラスと以下のコードサンプルは、MHT ヘッダーの書式設定を行う方法を示しています。
- setPageHeaderFormat(String value) - PageHeaderFormat: HeadersFormattingOptions のインスタンスで DefaultPageHeaderFormat が設定されていない場合に使用します。
- setHeaderFormat(String value) - HeaderFormat: HeadersFormattingOptions のインスタンスで DefaultHeaderFormat が設定されていない場合に使用します。
- setBeforeHeadersFormat(String value) - BeforeHeadersFormat: HeadersFormattingOptions のインスタンスで BeforeHeadersFormat が設定されていない場合に使用します。
- setAfterHeadersFormat(String value) - AfterHeadersFormat: HeadersFormattingOptions のインスタンスで AfterHeadersFormat が設定されていない場合に使用します。
// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();
オプション設定で EML を MHTML に変換
この MhtSaveOptions このクラスは、メールメッセージを MHTML 形式で保存するための追加オプションを提供します。列挙体は MhtFormatOptions これにより、追加のメール情報を出力 MHTML に書き込むことが可能になります。以下の追加フィールドが書き込めます:
- WriteHeader - メールヘッダーを書き出します。
- WriteOutlineAttachments - アウトライン添付ファイルを書き出します。
- WriteCompleteEmailAddress - 完全なメールアドレスを書き出します。
- NoEncodeCharacters - 文字の転送エンコーディングを使用しません。
- HideExtraPrintHeader - 出力ファイルの上部にある余分な印刷ヘッダーを非表示にします。
- WriteCompleteToEmailAddress - 受信者の完全なメールアドレスを書き出します。
- WriteCompleteFromEmailAddress - 送信者の完全なメールアドレスを書き出します。
- WriteCompleteCcEmailAddress - CC 受信者の完全なメールアドレスを書き出します。
- WriteCompleteBccEmailAddress - BCC 受信者の完全なメールアドレスを出力ファイルに書き込みます。
- RenderCalendarEvent - カレンダーイベントのテキストを書き出します。
- SkipByteOrderMarkInBody - Byte Order Mark(BOM)バイトを出力ファイルに書き込みます。
- RenderVCardInfo - VCard の AlternativeView からテキストを書き出します。
- DisplayAsOutlook - From ヘッダーを表示します。
- RenderTaskFields - 特定のタスクフィールドを出力ファイルに書き込みます。
- なし - 設定なし。
以下のコードスニペットは、オプション設定を使用して EML ファイルを MHTML に変換する方法を示しています。
MHTML に変換しながらカレンダーイベントをレンダリング
この MhtFormatOptions.RenderCalendarEvent カレンダーイベントを出力 MHTML にレンダリングします。以下のコードスニペットは、MHTML に変換しながらカレンダーイベントをレンダリングする方法を示しています。
インライン画像なしでメールを MHT にエクスポート
カスタマイズされたタイムゾーンでメールをMHTにエクスポート
MailMessage class は以下を提供します setTimeZoneOffset MHTにエクスポートする際にカスタマイズされたタイムゾーンを設定するプロパティです。次のコードスニペットは、カスタマイズされたタイムゾーンでメールをMHTにエクスポートする方法を示しています。
MailMessage msg = MailMessage.load(filename, new MsgLoadOptions());
msg.setDate(new Date());
// Set the timezone offset in milliseconds
msg.setTimeZoneOffset(5*60*60*1000);
MhtSaveOptions mhtOptions = new MhtSaveOptions();
mhtOptions.setMhtFormatOptions(MhtFormatOptions.WriteHeader);
msg.save(dataDir + "ExportToMHTWithCustomTimezone_out.mhtml", mhtOptions);
メールをEMLにエクスポート
次のコードスニペットは、メールをEMLにエクスポートする方法を示しています。
メールをHTMLとして保存
この HtmlSaveOptions クラスはメッセージ本文をHTMLにエクスポートすることを可能にします。次のコードスニペットは、メッセージをHTMLとして保存する方法を示しています。
リソースへの相対パスでメールメッセージをHTMLとして保存
メールメッセージをHTML形式でエクスポートする際に、メールリソースを相対パスで保存することを選択できます。この機能により、出力HTMLファイル内でのリソースのリンク方法に柔軟性が増し、異なるシステムで保存されたメールを共有および表示しやすくなります。その HtmlSaveOptions.UseRelativePathToResources プロパティは、リソースを相対パスで保存する機能を提供します。デフォルト値は false で、リソースは絶対パスで保存されます。true に設定すると、リソースは相対パスで保存されます。相対パスのHTMLファイルはよりポータブルで、ホスティング環境のファイル構造に関係なく正しく表示できます。要件に応じて絶対パスと相対パスを選択できます。リソースのカスタムパスは、次を使用して定義できます ResourceHtmlRenderingHandler イベント。
デフォルトの相対パスでリソースを保存
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);
msg.save("target.html", htmlSaveOptions);
この場合、リソースは [html file name].files フォルダーに保存され、.html ファイルと同じパスに配置され、HTMLはリソースを相対パスで参照します。
リソースへの絶対パスで保存
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
msg.save("target.html", htmlSaveOptions);
最初のケースと同様に、リソースはデフォルトで [html file name].files フォルダーに保存されますが、HTMLはリソースを絶対パスで参照します。
ResourceHtmlRenderingHandler イベントを使用したカスタム相対パス
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
htmlSaveOptions.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
@Override
public void invoke(Object sender, ResourceHtmlRenderingEventArgs args) {
if (sender instanceof AttachmentBase) {
AttachmentBase attachment = (AttachmentBase) sender;
// Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
args.setPathToResourceFile("images\\" + attachment.getContentType().getName());
}
}
});
msg.save(targetPath + "A Day in the Park.html", htmlSaveOptions);
次を使用して ResourceHtmlRenderingHandler イベントを使用すると、リソースのカスタム相対パスまたは絶対パスを設定できます。パスをカスタマイズする際に ResourceHtmlRenderingHandler イベントハンドラ、そして UseRelativePathToResources が true に設定されている場合、相対パスを割り当てる必要があります PathToResourceFile 正しい参照を確保するためのプロパティです。
HTMLに変換する際にメッセージ内のカスタムアイコンを保持
時々、メッセージにはインライン添付ファイルが含まれ、メッセージ本文にアイコン画像として表示されます。このようなメッセージはHTMLに変換する際にアイコン画像が失われるため、問題が生じることがあります。これは、添付ファイルのアイコンがメッセージ内に直接保持されていないためです。
Aspose.Email のユーザーは、メッセージをHTMLに変換する際に添付ファイルのアイコンをカスタマイズできます。そのために、 HtmlSaveOptions.ResourceHtmlRendering イベントは、メールメッセージをHTMLファイルとして保存する際にリソースファイル(添付ファイルなど)のレンダリングをカスタマイズするために使用されます。以下のコード例では、イベントハンドラを使用して、添付ファイルのコンテンツタイプに基づいてリソースファイル(アイコン)のパスを動的に設定します。これにより、ファイルタイプに応じたリソースのカスタマイズされたレンダリングがHTML出力に可能になります。
HtmlSaveOptions options = new HtmlSaveOptions();
options.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
@Override
public void invoke(Object sender, ResourceHtmlRenderingEventArgs e) {
AttachmentBase attachment = (AttachmentBase) sender;
e.setCaption(attachment.getContentType().getName());
if (attachment.getContentType().getName().endsWith(".pdf")) {
e.setPathToResourceFile("pdf_icon.png");
} else if (attachment.getContentType().getName().endsWith(".docx")) {
e.setPathToResourceFile("word_icon.jpg");
} else if (attachment.getContentType().getName().endsWith(".jpg")) {
e.setPathToResourceFile("jpeg_icon.png");
} else {
e.setPathToResourceFile("not_found_icon.png");
}
}
});
options.setResourceRenderingMode(ResourceRenderingMode.SubstituteFromFile);
String fileName = "message.msg";
MailMessage mailMessage = MailMessage.load(fileName);
mailMessage.save("fileName.html", options);
EMLをHTMLとして保存するときの時間とタイムゾーンの設定
Aspose.Email のユーザーは、時間とタイムゾーンの表示形式を設定できます HtmlSaveOptions。 HeadersFormattingOptions クラスはMailMessageをMHTMLまたはHTML形式で保存する際にヘッダーの書式設定オプションを指定することを可能にします。以下のメソッドは HtmlFormatOptions クラスは出力ファイルに表示されるフィールドを指定します:
- RenderCalendarEvent - カレンダーイベントのテキストを出力mhtmlに書き込むことを示します。
- RenderVCardInfo - VCard AlternativeView のテキストを出力HTMLに書き込むことを示します。
次のコード例は、EMLをHTMLに保存する際に時間とタイムゾーンを設定する方法を示しています:
MailMessage msg = MailMessage.load("fileName");
HtmlSaveOptions options = new HtmlSaveOptions();
options.setHtmlFormatOptions(HtmlFormatOptions.WriteHeader);
options.getFormatTemplates().set_Item("DateTime", "MM d yyyy HH:mm tt");
リソースを埋め込まずにHTMLとして保存
メッセージを Outlook テンプレート (.oft) ファイルとして保存
次のコードスニペットは、メッセージを Outlook テンプレート (.oft) ファイルとして保存する方法を示しています。