我现在可以获得邮件的所有信息,但是如何在jsp页面中的超链接里下载附件呢?
附件名我可以接收到,我想把 附件名 做成超链接,点击的时候提交到一个action,
然后直接弹出一个下载框直接提示下载?
<td>
    附件:
    <a href="downloadFile.action?msgNo="<s:property value="msgNo" /> >${filename }</a>
</td>
类似于这个,但是后台是如何实现的呢?
请大侠们给点提示或者是实现代码...
小弟感激不尽!~

解决方案 »

  1.   

    action里返回null,以流的方式写数据,设置类型为bin
      

  2.   

    http://download.csdn.net/source/1323454
    http://download.csdn.net/source/1323450这是我上传的java写的小项目,可以上传emial和附件,很简单,你看看。
      

  3.   

    我是想用javamail接收附件...
    如何实现呢?
    谢谢...等待中...
      

  4.   


             * 下载action,调用时传值下载路径即可
     * 
     * @return
     */
    public String downLoad() {
    HttpServletRequest request = request();
    HttpSession session = session();
    HttpServletResponse response = response();
    UserEmp userEmp = (UserEmp) session.getAttribute("userObject");
    if (userEmp == null) {
    return LOGIN;
    } else {
    String path = request.getParameter("path");
    try {
                                    //转码,如果有中文
    path = new String(path.getBytes("iso-8859-1"), "utf-8");
                                    //获取文件名
    String fileName = path.split("/")[path.split("/").length - 1];
                                    //设置输出方式
    response.setContentType("text/plain");
                                    //设置输出编码
    response.setCharacterEncoding("utf-8");
                                    //设置输出头部信息,就是弹出的那个对话框,假如有中文,编码一下
    response.setHeader("Content-disposition",
    "attachment;filename=" + URLEncoder.encode(fileName,"utf-8"));
                                    //创建流
    byte[] b = new byte[1024];
    InputStream in = new FileInputStream(new File(path));
    OutputStream out = response.getOutputStream();
    while (in.available() > 0) {
    in.read(b);
    out.write(b);
    }
    in.close();
    out.close();
    } catch (Exception e) {
    if (Constants.DEBUG) {
    e.printStackTrace();
    }
    }
    return null;
    } }
      

  5.   

    这样处理的话,还是需要我输入存放附件的路径啊...
    我的意思是,点击后直接提示下载信息,和右键另存为效果一样...
    不过还是很感谢你!~
    我现在的想法是把 邮件号, BodyPart号, 附件名传入一个servlet中,response.setContentType("text/html");
    ServletOutputStream out = response.getOutputStream();
    int msgnum = Integer.parseInt(request.getParameter("msgNo"));
    int bodynum =Integer.parseInt(request.getParameter("bodynum"));
    String filename = request.getParameter("filename");
    Properties props = new Properties();
    props.setProperty("mail.store.protocol", protocol);
    props.setProperty("mail.pop3.host", pop3Server);
    Session session = Session.getDefaultInstance(props);
    Store store;
    try {
    store = session.getStore();
    store.connect(pop3Server, username, password);
    Folder folder = store.getFolder("INBOX");
    folder.open(Folder.READ_ONLY);

    Message msg = folder.getMessage(msgnum);
    response.setHeader("Content-Disposition", "attacment;filename=" + filename);
    Multipart multi = (Multipart) msg.getContent();
    BodyPart bodypart = multi.getBodyPart(bodynum);
    InputStream is = bodypart.getInputStream();
    int c = 0;
    while((c=is.read()) != -1){
    out.write(c);
    }
    这样的话页面得到的是一堆乱码...:Rar!蠍s 埜t 倳?&硳Pl?3u dzyjml\电子邮件模块\JMail接收\代码\App_Code\MailTable.csu?5P[異N!jWW\JMai(l6e\犮Nx\App_Code\MailTable.cs ?溯矁圉?紇xd?傭??咹Z?好s0h餉?8B 9??勸梒歼AGGdL劣u帏eU]]邜裡梩U?~..................................我应该怎么办呢?