如何取消从Outlook发送邮件并关闭表单
我尝试从Outlook取消发送邮件。我需要从mailItem中获取所有字段并关闭它,而无需发送。如何取消从Outlook发送邮件并关闭表单
在我的代码我得到一个错误 - 无法在事件Item.Send执行命令Item.Close。
public partial class MyMainForm
{
Outlook.Application oApp;
Outlook.MailItem mailItem;
Timer timer_CloseMail;
private void Mail_in_outlook()
{
oApp = new Outlook.Application();
mailItem = Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
timer_CloseMail = new Timer();
timer_CloseMail.Interval = 1000;
timer_CloseMail.Tick += timer_CloseMail_Tick;
mailItem.To = "";
mailItem.Subject = "";
mailItem.HTMLBody = "";
oApp.ItemSend += oApp_ItemSend;
mailItem.DeleteAfterSubmit = true;
mailItem.Display(true);
// get mailItem.HTMLBody and other field....
}
void oApp_ItemSend(object Item,ref bool Cancel)
{
Cancel = true;
timer_CloseMail.Enabled = true;
}
private void timer_CloseMail_Tick(object sender, EventArgs e)
{
mailItem.Close(Outlook.OlInspectorClose.olDiscard);
timer_CloseMail.Enabled = false;
}
某些MAilItem方法(例如发送或关闭)不能在该事件处理程序中调用。您可以使用计时器(使用来自Forms命名空间的计时器,因为它在同一个线程上运行)并在ItemSEnd事件中启用它。当计时器触发时,禁用它并调用MailItem.Close - 到那时您将出现在ItemSent事件中。
我试过了。但计时器事件“嘀嗒”剂量火甚至timeer.enabled = true; – 2014-09-05 05:10:47
请显示您的代码 – 2014-09-05 05:39:19
好的。我更新了代码。 – 2014-09-06 08:56:47
@ user3666197,不要[粗体单词](http://*.com/review/suggested-edits/5699992)。 – gunr2171 2014-09-04 20:53:43