2017-02-17 42 views
0

Я пытаюсь создать файл формата Outlook .msg, используя мой код C#. Я использовал ниже 2 кода:Создать Outlook. MSG-файл в C#

Метод 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 = "[email protected]"; 
      msgInterop.CC = "[email protected]"; 

      // 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", "[email protected]", "SMTP", rdoMailRecipientType.olTo); 
       Msg.Save(); 

Оба метода дает ошибку выполнения, как показано ниже:

System.Runtime.InteropServices.COMException (0x8004010F): Creating an instance of the COM component with CLSID {29AB7A12-B531-450E-8F7A-EA94C2F3C05F} from the IClassFactory failed due to the following error: 8004010f Exception from HRESULT: 0x8004010F.

Я исследовал и нашел проблему совместимости с платформой. Я попытался сменить платформу с 32-битного на x64. Тем не менее это не решило мою проблему.

+0

Я рекомендую использовать встроенную функцию .Net MailMessage для сохранения сообщения как [описано здесь] (http://stackoverflow.com/questions/1264672/how-to-save-mailmessage-object-to-disk-as -eml-or-msg-file) – Esko

+0

MailMessage не позволяет создать мою собственную пробную электронную почту. Когда я пытался установить To, он говорит, что это переменная только для чтения. – Neha

+0

Что вы подразумеваете под пример электронной почты? To-property является обязательным для чтения, поскольку это список, вам нужно сделать message.To.Add (...) – Esko

ответ

0

Я установил Outlook в свою систему. И код, который я написал выше (Microsoft.Office.Interop.Outlook.Application) работает как шарм :).

0

Установлен ли внешний вид и в работоспособном состоянии на машине, из которой вы это делаете? Ошибка заключается в том, что комком-компонент не зарегистрирован, что обычно означает, что вы просто скопировали DLL с другого компьютера, который не регистрировал ком.

Так как установить внешний вид, или установить этот

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

+0

Я установил его, ничего не изменилось. Выдается такая же ошибка. – Neha

+0

@Neha вы можете подробно описать следующее: 64 vs x86 для каждой операционной системы, на которой он работает, офисные DLL и на что установлена ​​VS-сборка? –

0

Оба методы дают вам точно такую ​​же ошибку? Redemption возвращает 0x8004010F (MAPI_E_NOT_FOUND), если он не может найти и загрузить систему MAPI.

Убедитесь, что Outlook установлен, а бит вашего приложения соответствует битности Outlook (см. http://www.dimastr.com/redemption/faq.htm#ErrorCreatingRedemptionObject). Если Outlook не может быть установлен, вы можете установить автономную версию MAPI с https://www.microsoft.com/en-us/download/details.aspx?id=42040, но имейте в виду, что она не поддерживает файлы MSG Unicode.