我目前正在寻找一种方法(用Java)来启动带有定义的接收者、主题和正文以及预定义附件的默认邮件客户端。
由于 RFC 的限制,java.awt.Desktop.mail-Method 不适用于附件。 JDIC 项目已经消亡,而 JMAPI 项目在构建过程中也相当晦涩难懂。 (需要 1.4 Mozilla-Sources)而且我必须自己为 64 位系统构建它。
还有其他选择吗?我已经阅读了这里的文章,但使用 rundl32.dll 和此类“解决方案”并不是我想放入生产代码中的内容。
在 Java 中似乎没有任何与操作系统无关的方法来执行此操作,因为并非所有操作系统都提供标准方法来启动默认电子邮件应用程序,其中包含的内容不仅仅是新电子邮件的基本字段。
在 Windows 上,可以使用 MAPI 的 JNI 接口,这将提供对在邮件应用程序中打开电子邮件的更多控制。正如您所提到的,JMAPI 就是这样的一个库 - 然而,似乎有许多具有类似用途的同名库。我发现了一个最近维护的并且看起来相当简单的。它包括一个预构建的二进制 dll 和一个附带的基于 Java JNI 的库。
https://github.com/briandealwis/jmapi
使用此代码,您似乎只需要构造一个消息对象并调用一个方法即可在邮件应用程序中启动它:
导入 jmapi.*;
...
if (JMAPI.isMapiSupported()) {
Message msg = new Message();
msg.setSubject("test!");
msg.setBody("Hello world");
List<String> toAddresses = new LinkedList<String>();
toAddresses.add("[email protected]");
msg.setToAddrs(toAddresses);
List<String> attachPaths = new LinkedList<String>();
//Must be absolute paths to file
attachPaths.add("C:\Users\Documents\file.jpg");
msg.setAttachments(attachPaths);
JMAPI.open(msg);
}
另一种可能适用于 Windows 和 Mac(以及可能的其他操作系统)的可能性是生成“.eml”或“.msg”文件,其中包含您希望包含的已编码为电子邮件一部分的内容和附件。然后可以使用相应电子邮件文件格式的默认处理程序启动该文件。但是,这并不能保证打开默认的电子邮件处理程序,文件格式也不能与每个电子邮件客户端兼容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)