如何取消从Outlook发送邮件并关闭表单

本文关键字:表单 Outlook 何取消 取消 | 更新日期: 2023-09-27 18:20:52

我试图取消从Outlook发送邮件。我需要从mailItem中获取所有字段,并在不发送的情况下关闭它。

在我的代码中,我得到了一个错误-无法在事件Item.Send.期间执行命令Item.Close

public partial class MyMainForm
{
    Outlook.Application oApp;
    Outlook.MailItem mailItem;
    System.Threading.Timer timer_CloseMail;
  private void Mail_in_outlook()
    {
        oApp = new Outlook.Application();
        mailItem = Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
        TimerCallback tm = new TimerCallback(CloseMail);
        timer_CloseMail = new Timer(tm);
        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;
        MailtimeTimer.Change(0, 0);
    }
private void CloseMail(object sender)
    {
        mailItem.Close(Outlook.OlInspectorClose.olDiscard);
    }

如何取消从Outlook发送邮件并关闭表单

不能在该事件处理程序中调用某些MAilItem方法(如Send或Close)。您可以使用计时器(使用Forms命名空间中的计时器,因为它在同一线程上运行)并在ItemSEnd事件中启用它。当计时器触发时,禁用它并调用MailItem.Close-到那时,您将退出ItemSent事件。