在C#中创建outlook .msg文件

时间:2017-02-17 12:22:08

标签: c# office-interop outlook-redemption

我正在尝试使用我的C#代码创建outlook .msg格式文件。 我使用了以下2个代码:

方法1:

Microsoft.Office.Interop.Outlook.Application objOutlook = new Microsoft.Office.Interop.Outlook.Application();

            // Creating a new Outlook message from the Outlook Application instance
            Microsoft.Office.Interop.Outlook.MailItem msgInterop = (Microsoft.Office.Interop.Outlook.MailItem)(objOutlook.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem));

            // Set recipient information
            msgInterop.To = "neha1@gmail.com";
            msgInterop.CC = "neha@gmail.com";

            // Set the message subject
            msgInterop.Subject = "Subject";

            // Set some HTML text in the HTML body
            msgInterop.HTMLBody = "<h3>HTML Heading 3</h3> <u>This is underlined text</u>";

            // Save the MSG file in local disk
            string strMsg = @"c:\\temp\TestInterop.msg";
            msgInterop.SaveAs(strMsg, Microsoft.Office.Interop.Outlook.OlSaveAsType.olMSG);

第二种方法:

 Redemption.RDOSession Session = new RDOSession();
                Redemption.RDOMail Msg = Session.CreateMessageFromMsgFile(@"c:\temp\YourMsgFile.msg");
                Msg.Sent = true;
                Msg.Subject = "test";
                Msg.Body = "test body";
                Msg.Recipients.AddEx("the user", "user@domain.demo", "SMTP", rdoMailRecipientType.olTo);
                Msg.Save();

两种方法都会在执行时出错,如下所示:

  

System.Runtime.InteropServices.COMException(0x8004010F):创建一个   带有CLSID的COM组件的实例   来自IClassFactory的{29AB7A12-B531-450E-8F7A-EA94C2F3C05F}失败   由于以下错误:8004010f来自HRESULT的异常:   0X8004010F。

我研究过并发现了平台的一些兼容性问题。我试图将平台从32位更改为x64。它仍然无法解决我的问题。

3 个答案:

答案 0 :(得分:1)

在您正在执行此操作的计算机上安装Outlook并处于可运行状态吗?错误是com组件没有注册,这通常意味着你只是从另一台没有注册com的机器上复制了dll。

所以要么安装outlook,要么安装这个

https://www.microsoft.com/en-us/download/details.aspx?id=1004

答案 1 :(得分:0)

两种方法都会给出完全相同的错误?如果无法找到并加载MAPI系统,则赎回将返回0x8004010F(MAPI_E_NOT_FOUND)。

确保安装了Outlook并且您的应用的位数与Outlook的位数相匹配(请参阅http://www.dimastr.com/redemption/faq.htm#ErrorCreatingRedemptionObject)。如果无法安装Outlook,则可以从https://www.microsoft.com/en-us/download/details.aspx?id=42040安装独立版本的MAPI,但请记住它不支持Unicode MSG文件。

答案 2 :(得分:0)

我在我的系统上安装了Outlook。我上面发布的代码( Microsoft.Office.Interop.Outlook.Application )就像魅力:)。