等待使用jacob发送/关闭邮件

时间:2015-07-20 14:23:16

标签: java email outlook outlook-vba jacob

我的应用程序使用jacob发送电子邮件。 现在我想在某些情况下打开邮件并等待用户按发送(或者他关闭邮件)

ActiveXComponent axcOutlook = new ActiveXComponent("Outlook.Application");
Dispatch mail = Dispatch.invoke(axcOutlook.getObject(), "CreateItem", Dispatch.Get, new Object[] { "0" }, new int[0]).toDispatch();
...
Dispatch.put(mail, "Subject", subject);
Dispatch.put(mail, "Body", sbBody.toString());
Dispatch.put(mail, "ReadReceiptRequested", "false");
Dispatch.call(mail, "Display");
//And here I want to wait till the Mail is sent/closed

我尝试了一段时间(真实)循环

while (true) {
    if (Dispatch.get(mail, "Sent").getBoolean()) {
        return;
    }
}

但是有了这个approch我得到一个例外(在我发送邮件之后):

com.jacob.com.ComFailException: Invoke of: Sent

Source: Microsoft Outlook

Description: the element was moved or deleted.

1 个答案:

答案 0 :(得分:1)

您需要处理MailItem类的Send事件,当用户选择项目的“发送”操作时会触发该事件。

此外,您可能会发现Application类的ItemSend事件,只要用户通过Inspector发送Microsoft Outlook项目就会触发该事件(在检查器关闭之前,但在用户单击Send之后)按钮)或在程序中使用Outlook项目的Send方法(如MailItem)时。请注意,如果事件过程将Cancel参数设置为true,则发送操作未完成且检查器保持打开状态。