【问题标题】:how to send outlook email from draft folder in c#如何从 C# 中的草稿文件夹发送 Outlook 电子邮件
【发布时间】:2015-03-30 22:02:02
【问题描述】:

我正在尝试从 C# 中的 MAPI 草稿文件夹发送 Outlook 电子邮件项目,但没有成功。我还在寻找如何发送 MAPI 文件夹 (folderDrafts) 项,将其转换为 MailItem 不适用。

这是我使用的代码:

Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.NameSpace nameSpace = app.GetNamespace("MAPI");
Microsoft.Office.Interop.Outlook.MAPIFolder folderDrafts = nameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderDrafts);

Microsoft.Office.Interop.Outlook.MailItem mailItem = (Microsoft.Office.Interop.Outlook.MailItem)app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
mailItem.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
mailItem.Subject = "Test Outlook Mail Item";
mailItem.To = "receiver";
mailItem.HTMLBody = "html";
mailItem.Save();
mailItem = (Microsoft.Office.Interop.Outlook.MailItem)folderDrafts.Items[0];
mailItem.Send();

也许有人可以帮忙。提前致谢!

【问题讨论】:

  • 感谢 @EugeneAstafiev 的回答,我已经发送了 Outlook 邮件项目,但我的问题是 MS Outlook HTML 邮件正文的表格在 Lotus Notes 中未正确显示。当我尝试手动保存和发送时,意味着不在代码中,从草稿文件夹中,它可以工作。我想做的是以同样的方式编写代码。谢谢!

标签: c# outlook


【解决方案1】:

如果您只需要发送存储在 Draft Items 文件夹中的项目,则无需创建新的 MailItem 对象。

请注意,文件夹中可以存储各种 Outlook 项目,而不仅仅是邮件项目。因此,在将项目转换为代码中的 MailItem 类之前,您需要检查 MessageClass。例如,在 C# 中,您可以使用 is 或 as 运算符。您还可以使用后期绑定技术检查项目的 MessageClass 属性,请参阅 Type.InvokeMember。

How To: Create and send an Outlook message programmatically 文章可能对您有所帮助。

【讨论】:

    【解决方案2】:

    去掉下面这行:

    mailItem = (Microsoft.Office.Interop.Outlook.MailItem)folderDrafts.Items[0];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 2021-08-08
      相关资源
      最近更新 更多