【发布时间】:2021-08-08 20:11:48
【问题描述】:
void send_reply(Outlook.MailItem item, HashSet<string> names)
{
Outlook.MailItem eMail = item.Reply();
// want to open an email draft box for user to type in the email's content then return to the program here
eMail.Display();
foreach (string s in names)
{
eMail.To = s;
//MessageBox.Show("this is the guy we are sending to " + item.To);
eMail.Importance = Outlook.OlImportance.olImportanceHigh;
((Outlook._MailItem)eMail).Send();
}
}
想要回复给定的邮件,但只回复到名称中指定的电子邮件地址。我遇到的问题是,当我调用 eMail.Display() 时,它最多只显示半秒钟,然后草稿自动关闭,我向所有人发送一封空白回复电子邮件。
大家有什么建议吗?
【问题讨论】:
-
我认为
Display()不会等待用户关闭窗口并突然继续执行代码。这就是为什么它被关闭并立即发送...... -
@Seididieci 有没有办法暂停执行直到用户关闭窗口?
-
我从未使用过 Outlook 互操作,但您可以调查是否在某些用户交互(可能是关闭或发送按钮)上引发了事件并将您的逻辑移到那里...
-
这里docs.microsoft.com/en-us/office/vba/api/Outlook.MailItem 似乎您可以获得发送和关闭事件,因此您可以尝试在那里添加“收件人”地址......当用户简单地“关闭”消息时撤消操作......
标签: c# outlook outlook-addin