EML から MSG へ

EML は、Outlook、Outlook Express、Windows Live メール、または Thunderbird でサポートされている MIME RFC 822 標準形式でファイルに保存される電子メール メッセージのファイル拡張子です。また、EML ファイル形式は、電子メールを保存するためのプレーンテキスト MIME (rfc822) ファイル形式です。一方、MSG は、Microsoft の Outlook MAPI に基づく複合ファイル バイナリ形式です。また、Outlook アイテム MSG (. msg) ファイル形式は、電子メール、予定、連絡先、タスクなどの単一のメッセージ オブジェクトをファイルに保存するための構文です。

そこでこの記事では、REST API を使用して EML ファイルをプログラムで MSG 形式に変換する手順について説明します。

メール処理API

Aspose.Email Cloud は、一般的な電子メール形式 (Outlook EML、MSG、iCalendar ファイルVCard) を作成、操作、その他の サポートされているファイル形式 にレンダリングする機能を提供する REST ベースの API です。メッセージに含まれるヘッダー、送信者アドレス、コンテンツを操作したり、ファイル、写真、ドキュメントなどの電子メールの添付ファイルを処理したりする機能が得られます。同時に、連絡先カードの処理 (VCard の操作) を実装したり、iCalendar サポート を介してアプリケーションでカレンダーを処理したりすることもできます。

開発者の利便性のために、クラウド API のラッパーを作成しました。これにより、お気に入りの IDE 内ですべての機能を利用できるようになります。先に進む前に、次のリンクにアクセスして、Aspose.Cloud SDK のインストール方法 の詳細を確認することをお勧めします。

C# で EML を MSG に変換する

要件を満たすには、以下の手順に従ってください。

  • まず、ClientIDとClient Secretの詳細を引数として渡してEmailCloudクラスのオブジェクトを作成します。
  • 次に、ソースの電子メールファイルをFile.OpenReadインスタンスに読み取り、クラウドストレージのUploadFile(…)メソッドにアップロードします。
  • 3番目に、入力ファイルと結果のフォーマットを渡してEmailGetAsFileRequestのインスタンスを作成します。
  • EmailGetAsFile APIを使用して、クラウドストレージにあるEMLファイルをMSG形式に変換します。
  • 最後に、File.Createインスタンスを使用して結果のファイルをローカルドライブに保存するカスタムメソッドを呼び出します。
// 完全な例とデータファイルについては、 
https://github.com/aspose-email-cloud/aspose-email-cloud-dotnet

// https://dashboard.aspose.cloud/ からクライアント資格情報を取得します。
string clientSecret = "d757548a9f2558c39c2feebdf85b4c44";
string clientID = "4db2f826-bf9c-42e7-8b2a-8cbca2d15553";

// EmailCloud Apiのインスタンスを作成する
var emailApi = new EmailCloud(clientSecret, clientID);
       
// ソースEMLファイル名
string name = "sample.eml";
// 結果の MSG ファイルの名前
string resultantFile = "converted.msg";
// 結果ファイルの形式
string toFormat = "Msg";

 try
{
    // ソースEMLをストリームオブジェクトに読み込む
    using (var file = System.IO.File.OpenRead(@"C:\Users\shahbnay\Downloads\" + name))
    {
    
        // ソースEMLファイルをクラウドストレージにアップロードする
        emailApi.CloudStorage.File.UploadFile(new Aspose.Email.Cloud.Sdk.Model.UploadFileRequest(name, file));
        
        // 入力ファイルと結果のフォーマットを渡して EmailGetAsFileRequest インスタンスを作成します。
        var convertRequest = new EmailGetAsFileRequest(name, toFormat);
        
        // 変換操作を実行する
        var response = emailApi.Email.GetAsFile(convertRequest);

        // 変換が成功した場合は成功メッセージを出力します
        if (response != null && response.Equals("OK"))
        {
            // 成功メッセージを印刷する
            Console.WriteLine("Successfully converted EML to MSG !");
            Console.ReadKey();
        }
        
        // 結果のファイルストリームをローカルドライブに保存する
        saveToDisk(response, @"C:\Users\shahbnay\Downloads\" + resultantFile);
    }
}catch (Exception ex)
{
    // コンソールに例外を出力する
    Console.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}

// 出力をシステムドライブに保存するカスタムメソッド
static void saveToDisk(Stream responseStream, String resultantFile)
{
    var fileStream = File.Create(resultantFile);
    responseStream.Seek(0, SeekOrigin.Begin);
    responseStream.CopyTo(fileStream);
    fileStream.Close();
}

上記の例で使用したサンプルファイルは、sample.emlおよびconverted.msgからダウンロードできます。

ローカルドライブからファイルをロードして変換を実行する必要がある場合は、EmailConvert APIを使用してください。

cURL コマンドを使用して EML を MSG に変換する

Aspose.Email Cloud は REST アーキテクチャに従って開発されているため、cURL コマンドで簡単にアクセスできます。ターミナル アプリケーション/コマンド プロンプトを使用して API にアクセスします。最初のステップは、Aspose.Cloud ダッシュボード で指定されたクライアント資格情報に基づいて JWT アクセス トークンを生成することです。詳細については、クライアント ID とクライアント シークレット キーを使用して JWT トークンを取得する方法 を参照してください。

JWTトークンを取得したら、次のコマンドを使用して、クラウドストレージで利用可能なEMLファイルをMSG形式に変換し、出力をローカルドライブに保存します。変換には、EmailGetAsFile APIが使用されます。

curl -X GET "https://api.aspose.cloud/v4.0/email/as-file?fileName=sample.eml&format=Msg" \
-H  "accept: multipart/form-data" \
-H  "authorization: Bearer <JWT Token>" \
-o Converted.msg

結論

この記事では、一般的な電子メール形式を処理するための Aspose.Email Cloud の機能について説明しました。具体的には、C# .NET と cURL コマンドを使用して EML ファイルを MSG に変換する方法について説明しました。ただし、Cloud SDK は MIT ライセンスに従って開発されており、GitHub から完全なソース コードをダウンロードできます。

また、クラウド API の Swagger ビュー も提供しており、Web ブラウザ内で API をテストすることができます。また、問題が発生した場合やご質問がある場合は、無料カスタマー サポート フォーラム からお気軽にお問い合わせください。

関連記事