用struts的FormFile上传文件发邮件附件的问题,急!

trls 2006-08-03 10:32:29
请问
我在页面中浏览一个文件,想把这个文件当成邮件的附件发送出去,上传就用的struts带的FormFile得到了我选的文件对象,但是邮件发送附件里不知道要怎么加进来,请高手指点一二


谢谢
...全文
258 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
trls 2006-08-03
  • 打赏
  • 举报
回复
解决:) 用的ByteArrayDataSource 很感谢啊
cuij7718 2006-08-03
  • 打赏
  • 举报
回复
可以那个FileDataSource改为ByteArrayDataSource就行了

下面的地址里面还演示了发送html格式和text格式的邮件的区别
http://www.blogjava.net/sunfruit/archive/2006/02/19/31523.html
trls 2006-08-03
  • 打赏
  • 举报
回复
但是要构造FileDataSource对象,是不是就是要在服务器上先存在我要发送的文件?就是说要先上传文件到服务器端?但是我们的服务器是不让写文件的,所以我是想把附件文件读成个流,那么FileDataSource能通过文件流来构造吗?
boydream 2006-08-03
  • 打赏
  • 举报
回复
我来学习,友情帮顶!
rickhunterchen 2006-08-03
  • 打赏
  • 举报
回复
我想lz应该明白了,上传时不需要用FormFile得到对象,而是用FileDataSource得到对象。
rickhunterchen 2006-08-03
  • 打赏
  • 举报
回复
操作附件
附件是与邮件消息关联的资源,通常保存在消息之外,如:一个文本文件,电子表格或图片。对于像Eudora和Pine之类的常用邮件程序,您可以通过JavaMail API把资源附加到邮件消息上,并在您接收消息时获取附件。
发送附件
发 送附件与转发消息非常相似,您要创建组成完整消息的各个部分。在创建好第一个部分即消息文本之后,您添加的用DataHandler类处理的其他部分就是您的附件,而不是转发消息中的共享处理程序。当您从一个文件读取附件时,附件的数据资源是FileDataSource;从URL读取时,则是 URLDataSource。一旦您有了自己的DataSource,在将其通过setDataHandler()方法最终附加到BodyPart上之 前,只需将其传递给DataHandler类的构造器即可。假定您想保留附件的原始文件名,要做的最后一件事就是用BodyPart类的 setFileName()方法设置与附件关联的文件名。所有这些操作如下所示:
// Define message
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
message.setSubject("Hello JavaMail Attachment");
// Create the message part
BodyPart messageBodyPart = new MimeBodyPart();
// Fill the message
messageBodyPart.setText("Pardon Ideas");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
// Part two is attachment
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);
// Put parts in message
message.setContent(multipart);
// Send the message
Transport.send(message);
在消息中包含附件时,如果您的程序是一个servlet,您的用户就必须上传附件,并告诉您要把消息发送到什么位置。上传的每一个文件都可以用一个表单来处理,该表单是以multipart/表单数据(form-data)来编码的。
<FORM ENCTYPE="multipart/form-data"
method=post action="/myservlet">
<INPUT TYPE="file" NAME="thefile">
<INPUT TYPE="submit" VALUE="Upload">
</FORM>
注意:消息的大小要受到您的SMTP服务器的限制,而不是由JavaMail API限制的。如果出现了问题,可以通过设置ms和mx参数来考虑增加Java堆区的空间尺寸。
cuij7718 2006-08-03
  • 打赏
  • 举报
回复
要是javamail的话有一个例子
http://www.blogjava.net/sunfruit/archive/2006/02/19/31523.html
cuij7718 2006-08-03
  • 打赏
  • 举报
回复
FormFile没有用过,只用过 javamail

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧