2008-09-17 50 views
5

我想鼓励我们的RCP应用程序用户将问题详细信息发送给我们的支持部门。为此,我在标准错误对话框中添加了一个“联系人支持”小部件。如何使用指定客户端以编程方式从Java发送电子邮件附件

我已经设法使用URI头来发送堆栈跟踪使用Java 6的JDIC调用:Desktop.getDesktop().mail(java.net.URI)。这将启动用户的邮件客户端,准备好添加他们的评论,并点击发送。

我喜欢启动电子邮件客户端,因为这是用户习惯的,它告诉支持一大堆关于用户(sigs,联系方式等),我真的不想要to ship with Java Mail

我想要做的是将日志文件和堆栈跟踪附加为一个文件,所以没有最大长度要求,用户看到一个漂亮干净的电子邮件,支持部门有更多的信息跟...共事。

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

编辑: 我在OSGi上下文中,所以捆绑JDIC将是必要的。如果可能的话,我想尽可能少地依赖,并且将JDIC捆绑到多个平台听起来并不好玩,特别是对于这样一个小功能。

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

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

回答

3

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

+0

这是巧妙的。不幸的是,在这个开发箱中,Outlook是默认的电子邮件客户端,Outlook Express是eml文件的默认应用程序。 – jamesh 2008-09-17 12:53:25

0

使用这种方法,您可以设置主题行和正文的URI像

mailto:[email protected]?SUBJECT=Support mail&BODY=This is a support mail 

然而,主题和正文文本的长度将have some limitation

有没有办法,我可以想用这种方法或类似的东西来attatch文件(不加的JavaMail到您的应用程序)

0

JDIC可能并不总是在您的用户平台上可用。一个好的方法是使用javamail API。您可以发送由SUN在本教程讲解了多部分电子邮件:如果您使用JDK 6(你真的应该)

Sending Attachments

1

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

我相信大多数错误跟踪器都有类似的东西可用。我们使用Jira,它效果很好(显然,他们刚刚发布了一个免费的个人版本,可以很容易地尝试)。

0
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:[email protected]?subject=someSubject&[email protected]&[email protected]&body=someBodyText&Attach=c:\\test\\test.doc"}, null 
       ); 


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

} 
+1

附加不起作用 – 2012-11-20 08:33:58

相关问题