启动带有附件的Mail-Client?

| 我目前正在寻找一种方法(用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(\"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.awt.Desktop.mail做您提到的其他事情(使用定义的接收者,主题和正文启动默认的邮件客户端)。相信您已经在这里检查了。不过,这将非常有用。     
可能现在为时已晚,但以防万一仍然有人发现此问题:
Desktop.getDesktop().mail(new URI(\"mailto:email@example.com?subject=attachment_example&body=see_attached_file&attachment=/path/to/attachment\"));
应该以与平台无关的方式完成任务。     

要回复问题请先登录注册