使用EWS将EML转换为MSG c#

时间:2018-08-26 20:58:53

标签: c# .net outlook exchangewebservices outlook-web-addins

我需要使用Outlook Web加载项中的Exchange Web服务(EWS)将EML转换为MSG的帮助。当我从MimeContent(EmailMessage.MimeContent.Content)创建EML文件时,文件输出看起来很糟糕,某些标记当前未转换。 这些文件仅从Windows邮件应用程序打开就很好,但是从Ooutlook(2016)来看却很糟糕。

我试图从Microsoft找到一些解决方案,并找到了第三方解决方案Independent Independent,它的确很棒。格式为MSG时文件看起来不错。但这是针对客户的扩展许可解决方案(使用了30天的演示版)。 这是我使用并运行良好的方式,并尝试找到类似以下内容的

[Authorize]
public class RoleController : Controller
{
    private ApplicationRoleManager _roleManager;

    public RoleController() { }

    public RoleController(ApplicationRoleManager roleManager)
    {
        RoleManager = roleManager;
    }

    public ApplicationRoleManager RoleManager
    {
        get
        {
            return _roleManager ?? 
                HttpContext.GetOwinContext().Get<ApplicationRoleManager>();
        }
        private set { _roleManager = value; }
    }

    public ActionResult Index()
    {
        var model = RoleManager.Roles.ToList();
        return View(model);
    }

    public ActionResult Create()
    {
        return View();
    }

    [HttpPost]
    public async Task<ActionResult> Create(ApplicationRoleCreateModel model)
    {
        if (ModelState.IsValid)
        {
            var result = await RoleManager.CreateAsync(new ApplicationRole()
            {
                Name = model.Name,
                ApplicationId = model.ApplicationId
            });
            if (result.Succeeded)
                return RedirectToAction("Index");
            else
                foreach (var error in result.Errors)
                    ModelState.AddModelError("", error);
        }
        return View();
    }
}

1 个答案:

答案 0 :(得分:0)

我不知道显示EML文件时有任何Outlook问题。它使用与解析传入的POP3 / IMAP4消息相同的EML解析器。请发布Outlook无法正确显示的特定EML文件。

对于将EML文件转换为MSG,您还可以使用Redemption及其RDOSessionCreateMessageFromMsgFIleRDOMailImport方法。请记住,这要求MAPI系统必须存在才能正常运行,这意味着必须在本地安装Outlook。

我的头顶上

RDOSession session = new RDOSession();
RDOMail msg = session.CreateMessageFromMsgFile(TempMsgDirectory + "mail.msg");
msg.Import(TempMsgDirectory + "YouEmlFile.eml", rdoSaveAsType.olRFC822);
msg.Save();