【问题标题】:Attaching file to mail with outlook使用Outlook将文件附加到邮件
【发布时间】:2013-06-15 01:32:27
【问题描述】:

我有一个文件(一个名为 secretimage 的 btmap),当用户点击一个按钮时,我想将它附加到邮件中。我想为此使用 Outlook。

这就是我所做的:

using Outlook = Microsoft.Office.Interop.Outlook;
private void cmdSend_Click(object sender, EventArgs e)
    {
            Outlook.Application app = new Outlook.Application();
            Outlook.MailItem mail = new Outlook.MailItem();
            Outlook.Attachment attach = mail.Attachments.Add(secretImage, Outlook.OlAttachmentType.olByValue, 0, "Secret message");
    }

虽然这给了我以下错误:

检索具有 CLSID 的组件的 COM 类工厂 {00061033-0000-0000-C000-000000000046} 由于以下错误而失败:80040154 Klasse nicht registriert(来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG))。

最后一部分是德语,我不知道为什么,实际上我已经将语言设置为英语。 “Klasse nicht registriert”翻译为“类未注册”。

我尝试做这里推荐的事情: Retrieving the COM class factory for component with CLSID {XXXX} failed due to the following error: 80040154 虽然那没有用。

有人可以帮我吗?我真的被困住了。

【问题讨论】:

  • 您不使用 Exchange Web 服务 API 是否有原因?
  • 嗯,这更像是一种练习,如果可能的话,我想这样做。
  • 使用此方法将遇到的问题之一是 Outlook 具有安全措施,您必须允许应用程序代表您发送。它会提示,如果不使用一些专门编写的软件来抑制该消息并为您回答,则无法默认该答案。这不适合发送电子邮件。我建议要么使用 Exchange Web 服务,要么允许机器使用 SMTP 并使用 System.Net.Mail 命名空间。您如何使用我在下面提供的代码来执行此操作,并且我进行了测试并且它可以工作。

标签: c# com outlook


【解决方案1】:

尝试将您的邮件项目换成此代码,取自此链接。 80040154 Class not registered ERROR in Outlook 2010 Add In

Microsoft.Office.Interop.Outlook.MailItem mail= app.CreateItem((OlItemType.olMailItem));

使用此方法您将遇到的一个问题是 Outlook 具有适当的安全措施,您必须允许应用程序代表您发送。它会提示,如果不使用一些专门编写的软件来抑制该消息并为您回答,则无法默认该答案。这不适合发送电子邮件。我建议要么使用 Exchange Web 服务,要么让机器成为 SMTP 并使用 System.Net.Mail 命名空间。您如何使用我提供的代码来执行此操作,并且我已经测试并且它可以工作。

【讨论】:

  • secretImage 变量是否指向完全限定的文件名?
  • 我在使用 Outlook 16.0 对象库时遇到了同样的问题。你会认为他们现在已经更新了一些东西并让 COM/.net 和谐地一起工作!
猜你喜欢
  • 2016-08-29
  • 2020-11-21
  • 1970-01-01
  • 2023-03-11
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
相关资源
最近更新 更多