有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从运行服务器上安装的程序的客户端计算机发送outlook电子邮件

大家好

我有一个通过网络运行的java web应用程序,该应用程序安装在服务器上。作为程序的一部分,它会自动发送outlook电子邮件,我使用java com bridge(jacob)实现了这一点。电子邮件正在服务器上发送,我想在客户端计算机上发送outlook电子邮件,以便用户可以跟踪他们在客户端计算机上发送的电子邮件

我正在使用这个代码

 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 mailItem = Dispatch.call(axOutlook, "CreateItem", 0).getDispatch();
            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");
        }
    }

有没有什么可能的方法可以做到这一点。我知道使用mailto的一种可能方法:但我一直在添加附件,因为基本要求是填写电子邮件地址、主题、抄送、消息和附件


共 (2) 个答案

  1. # 1 楼答案

    我用javax发送电子邮件。邮件库,它的Java库,它的使用非常简单。不需要查看JavaXComponent和Outlook库

    JavaMail(javax.mail)https://mvnrepository.com/artifact/javax.mail/mail/1.4.7

    对于简单的邮件发送和附件发送,请查看(正如我前面提到的)javax。邮件库

    导入库,链接到你的电子邮件,创建简单的消息,添加附件,然后你就可以开始了

  2. # 2 楼答案

    Attachments类的Add方法接受四个参数,其中一个是必需的,其他的是可选的

    • 来源附件的来源。这可以是一个文件(用文件名表示的完整文件系统路径)或构成附件的Outlook项目
    • 类型-附件的类型。可以是OlAttachmentType常量之一
    • 位置-此参数仅适用于使用富文本格式的电子邮件:附件应放置在邮件正文中的位置。Position参数的值为1指定附件应位于消息正文的开头。大于电子邮件项目正文中字符数的值“n”指定附件应放在末尾。值为0将隐藏附件
    • DisplayName-仅当邮件项目为富文本格式且类型设置为olByValue时,此参数才适用:该名称显示在附件的检查器对象中或查看附件属性时。如果邮件项目为纯文本或HTML格式,则会使用源参数中的文件名显示附件

    例如,一个示例VBA宏说明了一种可能的用法:

     Sub AddAttachment() 
       Dim myItem As Outlook.MailItem 
       Dim myAttachments As Outlook.Attachments 
    
       Set myItem = Application.CreateItem(olMailItem) 
       Set myAttachments = myItem.Attachments 
       myAttachments.Add "D:\Documents\Q496.xlsx", olByValue, 1, "4th Quarter 96 Results Chart" 
       myItem.Display 
     End Sub
    

    因此,基本上需要指定要附加的文件的完整文件路径

    仅供参考Microsoft强烈建议开发人员在需要开发服务器端解决方案时,寻找Office自动化的替代方案。由于Office设计的局限性,对Office配置的更改不足以解决所有问题。Microsoft强烈推荐一些不需要在服务器端安装Office的替代方案,它们可以比自动化更高效、更快地执行大多数常见任务。在将Office作为项目中的服务器端组件之前,请考虑备选方案。在Considerations for server-side Automation of Office文章中阅读更多关于这方面的信息