我有一个在 Tomcat 上运行的 Java 应用程序,它需要生成一封电子邮件到连接客户端计算机上的 Outlook。目前我的代码总是将电子邮件定向到运行 tomcat 的服务器上的 Outlook,而不是连接的客户端。我在下面附上了我用来连接到 Outlook 的代码。任何有助于实现这一目标的帮助将不胜感激。
package org.outlook.emails;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
public class EmailAPI
{
private ActiveXComponent ol;
private Dispatch outlook;
private Object mapi[] = new Object[1];
private Object email[] = new Object[1];
public EmailAPI()
{
mapi[0] = "MAPI";
email[0] = 0;
ol = new ActiveXComponent("Outlook.Application");
outlook = ol.getObject();
Dispatch.call(outlook,"GetNamespace",mapi).toDispatch();
}
public void createEmail(String receiver,String cc,String subject, String body, String attachments[])
{
Dispatch mail = Dispatch.call(outlook,"CreateItem",email).toDispatch();
Dispatch inspector = Dispatch.get(mail, "GetInspector").getDispatch();
Dispatch recipients = Dispatch.call(mail, "Recipients").getDispatch();
Dispatch.call(recipients, "Add" , receiver);
Dispatch.put(mail, "CC",cc);
Dispatch.put(mail, "Subject", subject);
Dispatch.put(mail, "Body", body);
if(attachments.length>0)
{
Dispatch attachs = Dispatch.get(mail, "Attachments").toDispatch();
for(Object attachment : attachments)
{
Dispatch.call(attachs, "Add", attachment);
}
}
Dispatch.call(mail, "Send");
}
}
谢谢。
医学
最佳答案
由于您的代码在服务器上运行,因此它当然会在服务器上触发任何操作(例如启动 outlook,如果存在的话)。
您必须将代码传输到客户端并在那里执行。这对于 java 小程序是可能的,但是最近已被删除/禁用。另一种可能性是 java web start 技术,它可以为您做到这一点。但是也支持 web 启动 will be removed in future 版本的 java。所以现在我们对你的情况知之甚少,但我建议你再做一些评估/分析。根据您的要求,有多种可能性,只能猜测最适合您的选择。一些选项:
- 使用 Java Web Start,因为您只需要在有限的时间内提供该功能
- 您编写了一个独立的 Java 应用程序(因为例如您管理公司的所有客户)
- 您使用 javascript 启动客户端上安装的任何电子邮件客户端(例如
window.location.href = "mailto:user@example.com?subject=Subject&body=message%20goes%20here";
或者一些仅 IE 的解决方案 here - 您实现自己的 HTML 电子邮件 Web 表单并从服务器发送电子邮件(这比您想象的要容易,除了电子邮件基础设施问题)
- ...更多选项
关于java - 使用 Jacob 集成 Tomcat 和 Microsoft Outlook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49698419/