java - 使用 Jacob 集成 Tomcat 和 Microsoft Outlook

标签 java tomcat outlook jacob

我有一个在 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/

相关文章:

tomcat停留服务状态:starting,无法通过localhost访问: port(Googled,好像没有人遇到过这种情况)

java - 当我尝试在 Eclipse 中启动服务器时,为什么 Tomcat 'Out of Memory' 是正确的?

html - 表格宽度在 Outlook 2010 中不起作用

java - 如何访问 MS Azure 存储云中的辅助位置

JavaFX hello world 按钮的启动方法不允许 setText 或添加 setOnAction

java - 如何在两个不同的 CRM 系统中自动化复制故障单?

macos - 访问 Tomcat 目录时出现问题

vba - 使用当前打开的电子邮件

vba - 如何在不滚动的情况下制作整个电子邮件正文的屏幕截图?

java - 为android Activity 类创建头文件