【问题标题】:Convert from .eml to .msg in C# .NET在 C# .NET 中从 .eml 转换为 .msg
【发布时间】:2019-11-28 20:28:22
【问题描述】:

我希望我的用户填写一个简单的表单,其中包含“发件人”、“收件人”、“主题”、“正文”和“附件”等字段。完成后,他们应该单击一个按钮,让他们下载 .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 whitout?

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

【问题讨论】:

  • 您可以将 Outlook 插件分发给您的用户,以便他们可以在客户端上进行 eml 到 msg 的转换。
  • Outlook 也会打开 eml 文件
  • 我正在部署一个 Web 应用程序,我无法向我的所有用户发送插件。 @DanL 我有 Office 2007 SP3(不是 Express),但没有。
  • 为什么你不能在你的网站上提供一个链接,并告诉用户他们必须安装你的插件才能在 Outlook 中打开电子邮件? “云”服务要求用户安装一些客户端软件并非闻所未闻。
  • @AlexanderD 我有 Office 2010(不是 Express),它确实打开了 eml,因为我今天已经打开了大约 16 个 eml 文件。如果使用低于 Office 2010 的用户比例足够小,您仍然可以将其视为一个选项。干杯,丹

标签: c# asp.net webforms


【解决方案1】:

注意: cmets 关于答案的总结。

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

【讨论】:

【解决方案2】:

要将 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 的开发人员宣传员。

【讨论】:

    猜你喜欢
    • 2015-06-12
    • 2018-06-23
    • 2023-03-14
    • 2018-11-22
    • 2011-09-18
    • 2016-11-13
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    相关资源
    最近更新 更多