EML 转 MSG

EML 是电子邮件消息的文件扩展名,以 Outlook、Outlook Express、Windows Live Mail 或 Thunderbird 支持的 MIME RFC 822 标准格式保存到文件中。此外,EML 文件格式是用于存储电子邮件的纯文本 MIME (rfc822) 文件格式。另一方面,MSG 是基于 Microsoft 的 Outlook MAPI 的复合文件二进制格式。此外,Outlook Item MSG (.msg) 文件格式是一种语法,用于在文件中存储单个消息对象(例如电子邮件、约会、联系人、任务等)。

因此,在本文中,我们将讨论如何使用 REST API 以编程方式将 EML 文件转换为 MSG 格式的步骤。

电子邮件处理 API

Aspose.Email Cloud 是一个基于 REST 的 API,提供创建、操作和呈现常见电子邮件格式(Outlook EML、MSG、iCalendar 文件VCard)到其他 支持的文件格式 的功能。您可以使用邮件中包含的标题、发件人地址、内容,或处理电子邮件附件(如文件、照片、文档等)。同时,在您的应用程序中实现联系人卡片处理(操作 VCard)或通过 iCalendar 支持 处理日历。

为了方便开发人员,我们创建了 Cloud API 的包装器,以便您在自己喜欢的 IDE 中即可获得所有功能。在继续操作之前,我们建议您访问以下链接以了解有关 如何安装 Aspose.Cloud SDKs 的更多信息。

在 C# 中将 EML 转换为 MSG

请按照以下步骤满足您的要求:

  • 首先,通过传递 ClientID 和 Client Secret 详细信息作为参数来创建 EmailCloud 类的对象
  • 其次,将源邮件文件读取到File.OpenRead实例并上传到云存储UploadFile(…)方法
  • 第三,创建一个 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.emlconverted.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。此外,如果您遇到任何问题或有任何其他疑问,请随时通过 免费客户支持论坛 与我们联系。

相关文章