我想知道是否有办法通过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);
}
感谢您的帮助
答案 0 :(得分:1)
您必须将文件上传到服务器。
GWT中最简单的方法是将FileUpload
(和所有表单输入小部件)放在FormPanel
中;它的缺点是使错误处理(以及来自服务器的响应处理)更加困难。
在最近的浏览器中,另一种方法是从File
中获取java.io.File
对象(不 a FileUpload
,一个JS对象)并上传它使用XMLHttpRequest
(可能与FormData
结合以发送其他表单值)。在GWT中,这意味着使用JSNI(也可能使用Elemental
库),并且真正了解您正在做的内容。
在任何情况下,您都无法使用GWT-RPC与服务器通信并同时发送文件。