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的一种可能方法:但我一直在添加附件,因为基本要求是填写电子邮件地址、主题、抄送、消息和附件
# 1 楼答案
我用javax发送电子邮件。邮件库,它的Java库,它的使用非常简单。不需要查看JavaXComponent和Outlook库
JavaMail(javax.mail)https://mvnrepository.com/artifact/javax.mail/mail/1.4.7
对于简单的邮件发送和附件发送,请查看(正如我前面提到的)javax。邮件库
导入库,链接到你的电子邮件,创建简单的消息,添加附件,然后你就可以开始了
# 2 楼答案
Attachments
类的Add
方法接受四个参数,其中一个是必需的,其他的是可选的例如,一个示例VBA宏说明了一种可能的用法:
因此,基本上需要指定要附加的文件的完整文件路径
仅供参考Microsoft强烈建议开发人员在需要开发服务器端解决方案时,寻找Office自动化的替代方案。由于Office设计的局限性,对Office配置的更改不足以解决所有问题。Microsoft强烈推荐一些不需要在服务器端安装Office的替代方案,它们可以比自动化更高效、更快地执行大多数常见任务。在将Office作为项目中的服务器端组件之前,请考虑备选方案。在Considerations for server-side Automation of Office文章中阅读更多关于这方面的信息