gpt4 book ai didi

java - 启动带有附件的邮件客户端?

转载 作者:IT老高 更新时间:2023-10-28 20:48:02 25 4
gpt4 key购买 nike

我目前正在寻找一种方法(在 Java 中)来启动默认邮件客户端,其中包含已定义的收件人、主题和正文以及预定义的附件。

由于 RFC 的限制,java.awt.Desktop.mail-Method 不适用于附件。 JDIC 项目已死,JMAPI 项目在构建过程中相当模糊。 (需要 1.4 Mozilla-Sources)而且我必须自己为 64 位系统构建它。

还有其他选择吗?我已经阅读了这里的文章,但是使用 rundl32.dll 和这样的“解决方案”并不是我想放入生产代码的东西。

最佳答案

在 Java 中似乎没有任何与操作系统无关的方法来执行此操作,因为并非所有操作系统都提供标准方法来启动默认电子邮件应用程序,而不仅仅是新电子邮件的基本字段。

在 Windows 上,可以使用 MAPI 的 JNI 接口(interface),这将提供对在邮件应用程序中打开电子邮件的更多控制。正如您所提到的,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("example@example.com");
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”文件,其中包含您想要包含的内容和附件,这些内容和附件已经编码为电子邮件的一部分。然后可以使用相应电子邮件文件格式的默认处理程序启动此文件。但是,这不能保证打开默认的电子邮件处理程序,文件格式也不能与每个电子邮件客户端兼容。

关于java - 启动带有附件的邮件客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6029579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com