我的应用程序与 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) 循环
while (true) {
if (Dispatch.get(mail, "Sent").getBoolean()) {
return;
}
}
但是通过这种方法我得到了一个异常(exception)(在我发送邮件之后):
com.jacob.com.ComFailException:调用:已发送
来源:Microsoft Outlook
描述:元素已移动或删除。
最佳答案
您需要处理Send MailItem 类的事件,当用户为某个项目选择“发送”操作时将触发该事件。
您还可以找到ItemSend Application 类的事件,每当用户通过检查器发送 Microsoft Outlook 项目时(在检查器关闭之前,但在用户单击“发送”按钮之后)或在 Outlook 项目的 Send 方法(例如作为 MailItem,在程序中使用。请注意,如果事件过程将 Cancel 参数设置为 true,则发送操作未完成并且检查器保持打开状态。
关于java - 等待邮件未通过 jacob 发送/关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31519010/