gpt4 book ai didi

c# - 在草稿文件夹中保存一个项目也会创建一个空白的发件箱项目

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:48 25 4
gpt4 key购买 nike

我有一个 C# 控制台应用程序,可以动态创建一堆电子邮件并将它们保存到 Outlook 2013 中的草稿文件夹中。但是,我遇到了一个问题,我创建的项目不仅在草稿文件夹中创建,但发件箱文件夹中也会创建一个空白项目(为每个填写的草稿项目创建一个空白发件箱项目)。

相比之下,当我尝试使用 UI 创建草稿电子邮件时,它按预期工作。我创建了一封新电子邮件,单击保存,该项目仅出现在草稿文件夹中。当我尝试以编程方式执行此操作时,会创建发件箱项目。

这是我用来创建电子邮件的 C# 代码:

Outlook.Application app = new Outlook.Application();
Outlook._NameSpace ns = null;
Outlook.Account smtpAddress = null;
Outlook.MAPIFolder draftsFolder = null;

ns = app.GetNamespace("MAPI");
draftsFolder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDrafts);

Outlook.MailItem email = draftsFolder.Items.Add("IPM.NOTE");
email.Subject = "Test";
email.HTMLBody = "Test draft email";
email.Recipients.Add(smtpAddress.SmtpAddress);
email.Recipients.ResolveAll();
email.UnRead = True;
email.Save();

我也试过这个变体:

Outlook.Application app = new Outlook.Application();
Outlook._NameSpace ns = null;
Outlook.Account smtpAddress = null;
Outlook.MAPIFolder draftsFolder = null;

ns = app.Session;
ns.Logon(Profile:"", Password:Type.Missing, ShowDialog:Type.Missing, NewSession:true);
draftsFolder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDrafts) As Outlook.Folder;

Outlook.MailItem email = (Outlook.MailItem)draftsFolder.Items.Add("IPM.NOTE");
email.Subject = "Test";
email.HTMLBody = "Test draft email";
email.Recipients.Add(smtpAddress.SmtpAddress);
email.Recipients.ResolveAll();
email.UnRead = True;
email.Save();

为了排除故障,我在 Outlook 模块中创建了以下 VBA 代码来测试与上述类似的代码:

Sub SaveEmailToDraftFolder()
Dim app As Outlook.Application
Dim ns As Outlook.nameSpace
Dim fd As Outlook.folder
Dim em As Outlook.MailItem

Set app = New Outlook.Application
Set ns = app.GetNamespace("MAPI")
Set fd = ns.GetDefaultFolder(olFolderDrafts)

Set em = fd.Items.Add("IPM.NOTE")

With em
.Subject = "Test VBA"
.HTMLBody = "This is a test."
.Recipients.Add (smtpAddress) 'smtpAddress is just a placeholder for a real email address
.Recipients.ResolveAll
.UnRead = True
.Save
End With
End Sub

VBA 代码在运行时与 C# 代码执行相同的操作。它会在草稿文件夹中创建一封完整的电子邮件,但也会在发件箱中创建一个空白项目。

作为引用,我有两个 Outlook 配置文件,当我打开 Outlook 时,应用程序会提示我使用哪个配置文件。但是,如果我将设置更改为始终使用我的默认配置文件(“Outlook”),我已经测试了同时运行控制台应用程序和 VBA 代码,并且每次创建完成的草稿项目时它仍然会创建一个空白的发件箱项目。

有没有人遇到过这个问题,如果有,您是如何解决的?

谢谢。

最佳答案

在标记它之前需要保存.UnRead = True

VBA代码

With em
.Subject = "Test VBA"
.HTMLBody = "This is a test."
.Recipients.Add ("smtpAddress") 'smtpAddress is placeholder for a real email address
.Recipients.ResolveAll
.Save
.UnRead = True
End With

关于c# - 在草稿文件夹中保存一个项目也会创建一个空白的发件箱项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36988425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com