我想鼓励 RCP 应用程序的用户将问题详细信息发送给我们的支持部门。为此,我在我们的标准错误对话框中添加了一个“联系支持”小部件。

我已成功使用 URI 标头通过 Java 6 的 JDIC 调用发送堆栈跟踪: Desktop.getDesktop().mail(java.net.URI). 。这将启动用户的邮件客户端,准备好添加评论,然后点击发送。

我喜欢启动电子邮件客户端,因为这是用户所习惯的,它告诉支持人员有关用户的大量信息(签名、联系方式等),而我真的不想要 与 Java Mail 一起发送.

我想做的是将日志文件和堆栈跟踪作为文件附加,因此没有最大长度要求,用户会看到一封漂亮干净的电子邮件,并且支持部门有更多信息可以使用。

我可以用我正在采取的方法来做到这一点吗?或者,还有更好的方法?

编辑:我处于 OSGi 环境中,因此捆绑 JDIC 是必要的。如果可能的话,我希望提供尽可能少的依赖项,并且为多个平台捆绑 JDIC 听起来并不有趣,尤其是对于这么小的功能。

JavaMail 可能适合,但事实上它将出现在我们企业客户的桌面上。这 设置/发现配置 必须是透明的、自动的和可靠的。关于JavaMail,配置似乎只能手动进行。是这样吗?

我最喜欢的答案是使用 Desktop.open() 对于 *.eml 文件。很遗憾 Outlook Express(而不是 Outlook)打开 eml 文件. 。我不知道 Windows 配置为打开这样的 EML 文件是常见的还是默认的。这是常见的吗?或者是否有另一种基于文本的格式,a)很容易生成,b)默认在用户已经使用的同一电子邮件客户端中打开?

有帮助吗?

解决方案

您可以保存临时 .eml 文件,然后 Desktop.getDesktop().open(emlFile)
编辑: 正如您所指出的,不幸的是,这将打开 Outlook Express 而不是 Outlook。
但是,如果您安装了 Windows Live Mail,它将使用它。

其他提示

如果您使用 JDK 6(您确实应该使用),那么桌面 API 现在是 JRE 的一部分。看 http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/ 了解更多信息。

作为处理同一问题的完全不同的方式,我们使用带有 XML-RPC 接口的错误跟踪器,并且我们的(顺便说一句,RCP)应用程序使用自定义提交对话与之对话。这意味着我们可以发送日志文件来帮助诊断问题,而无需用户查找它们。

我确信大多数错误跟踪器都有类似的功能。我们使用 Jira,而且效果很好(显然,他们刚刚发布了免费的个人版本,可以轻松尝试)。

使用该方法,您可以使用 URI 设置主题行和正文文本,例如

mailto:me@here.com?SUBJECT=Support mail&BODY=This is a support mail

但是,主题和正文的长度将 有一定的局限性

我无法想到使用此方法或类似的方法附加文件(无需将 javamail 添加到您的应用程序)

JDIC 可能并不总是在您的用户平台上可用。实现此目的的一个好方法是使用 javamail API。您可以按照 SUN 在本教程中的说明发送多部分电子邮件:

发送附件

import java.awt.Desktop;
import java.io.File;
import java.net.URI;


public class TestMail {

    public static void main(String[] args) {
        try {       
         Runtime.getRuntime().exec(
                  new String[] {"rundll32", "url.dll,FileProtocolHandler",
                        "mailto:a@a.de?subject=someSubject&cc=a@a.de&bcc=a@a.de&body=someBodyText&Attach=c:\\test\\test.doc"}, null
                  );


        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top