如何在GWT中发送带附件的邮件?

时间:2013-07-10 23:57:27

标签: java java-ee gwt

我想知道是否有办法通过GWT发送带附件的电子邮件。 我设法发送了一封没有附件的简单电子邮件,但是当我尝试添加文件时遇到了问题。

问题是“FileUpload”没有给出文件的完整路径

出于安全原因,似乎无法从客户端检索文件的完整路径。 还有另一种方法将逻辑服务器保存在gwt客户端中吗?

我的代码

客户端:

FileUpload upload = new FileUpload();
// cannot retrieve the full path
String fileAttachment = upload.getName();

服务器端:

public void sendMail(String sender, String[] recipients, String subject, String message, String fileAttachment) {  
        try {  
            ...(init)           

            // Part two is attachment
            messageBodyPart = new MimeBodyPart();


                   //   =>  fileAttachment need full path
            DataSource source = 
              new FileDataSource(fileAttachment);

            messageBodyPart.setDataHandler(
              new DataHandler(source));
            messageBodyPart.setFileName(fileAttachment);
            multipart.addBodyPart(messageBodyPart);

            // Put parts in message
            msg.setContent(multipart);

            // Send
            Transport.send(msg);
}

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您必须文件上传到服务器。

GWT中最简单的方法是将FileUpload(和所有表单输入小部件)放在FormPanel中;它的缺点是使错误处理(以及来自服务器的响应处理)更加困难。

在最近的浏览器中,另一种方法是从File中获取java.io.File对象( a FileUpload,一个JS对象)并上传它使用XMLHttpRequest(可能与FormData结合以发送其他表单值)。在GWT中,这意味着使用JSNI(也可能使用Elemental库),并且真正了解您正在做的内容。

在任何情况下,您都无法使用GWT-RPC与服务器通信同时发送文件。