在C#.NET中从.eml转换为.msg

本文关键字:转换 msg eml 中从 NET | 更新日期: 2023-09-27 18:21:35

我希望我的用户填写一个简单的表单,其中包含From、to、Subject、Body和Attachments等字段。当他们完成后,他们应该点击一个按钮,让他们下载一个.msg文件,这样他们就可以在outlook中进一步编辑并发送它。

我为.NET找到的所有转换器API都是商业的(而且价格很高)。

这是我的代码:

using System.Net.Mail;

    protected void lbOpenOutlook_Click(object sender, EventArgs e)
    {
        CreateEmail();
    }
    internal void CreateEmail()
    {
        // Create message
        MailMessage message = new MailMessage();
        // subject
        message.Subject = "email subject";
        // body content
        message.Body = "email message.";
        // sender 
        message.From = new MailAddress("sender@gmail.com");
        // send this mail to
        message.To.Add("test1@gmail.com");
        // cc list
        message.CC.Add("ccuser1@gmail.com");
        // Create the SMTP Client object
        SmtpClient smtpClient = new SmtpClient();
        // store in directory 
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
        // path of the pickup folder
        smtpClient.PickupDirectoryLocation = Server.MapPath("~/Emails/");
        // deliver email
        smtpClient.Send(message);
    }

这将生成一个.eml文件。。如何使用商业API将其转换为.msg内容?

此外,我不想使用Microsoft.Office.Interop.Outlook命名空间,因为它在客户端上运行良好,但在服务器上不受支持,而且我的应用程序正在IIS下运行。

在C#.NET中从.eml转换为.msg

注意:对答案的评论摘要。

虽然Outlook 2007不支持打开.eml文件,但Outlook 2010+可以正确打开.eml

要将EML转换为MSG,可以使用Aspose.Email for.Net.

这是一个第三方库,它可以为您提供一系列处理电子邮件的有用功能。电子邮件API可用于基本的电子邮件管理功能,如转换、邮件内容附件操作和编辑,以及其高级功能,如邮件存储文件的管理、发送和编辑;通过包括POP3、IMAP&SMTP。

你可以通过编程来完成。例如,您可以使用以下代码:

    //Initialize .EML file    
    using (MailMessage eml = new MailMessage("test@from.to", "test@to.to", "template subject", "Template body"))
   {
       string oftEmlFileName = "EmlAsMSG_out.msg";
       MsgSaveOptions options = SaveOptions.DefaultMsg;
       //Save created .MSG file  
       options.SaveAsTemplate = true;
       eml.Save(oftEmlFileName, options);
    }

我认为这种方法对你有用。

我是Aspose的开发人员福音传道者。