-1

我想知道是否有办法使用 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);
}

谢谢你的帮助

4

1 回答 1

1

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

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

在最近的浏览器中,另一种方法是将File对象(不是一个java.io.FileJS 对象)取出并使用(可能还发送其他表单值)FileUpload上传它。在 GWT 中,这意味着使用 JSNI(可能也可以使用该库),并且真正了解您正在做什么的内幕。XMLHttpRequestFormDataElemental

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

于 2013-07-11T09:19:37.900 回答