Как ответить на почту, которая содержит вложение? - PullRequest
0 голосов
/ 01 декабря 2011

Я создал почтовый клиент, который отображает сообщения, и когда я нажимаю кнопку «Ответить», на почту следует отвечать вложением, но мой enctype='multipart/form-data'> не воспринимает bodypart.getContent() или любой другой метод. Пожалуйста, помогите мне в решении этой проблемы в ближайшее время, так как я должен подчинить свой проект.

composereplymail.jsp

<%@ page import="user.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%@ page import="java.io.*" %>
<%
    String sendmessage=(String)request.getAttribute("sendmessage");
    if(sendmessage==null)
    {
        sendmessage="";
    }

    if (session == null) {
        response.sendError(404, "Session expired");
        return;
    }
    userinfo info = (userinfo)session.getAttribute("userinfo");

    Session sessio = info.getSession();
    Store store = sessio.getStore("imap");
      store.connect(info.getHostname(),info.getusername(),info.getpassword());
    Folder folder = store.getFolder(info.getUrl()); 
    folder.open(Folder.READ_WRITE);
    Integer messageno=Integer.parseInt(request.getParameter("messageno"));
    Message[] message = folder.getMessages();
    String subject=message[messageno].getSubject();


%>



<html><head>
<title>Home Page</title>
<link rel="stylesheet" type="text/css" href="styleforcomposemail.css" />
</head>
  <body>
<center>
<form action='sendmail' method='post' enctype='multipart/form-data'>
    <table>
       <tr bgcolor='#800517'>
        <td colspan='2'><b><h3><center>Compose Your Mail Here</center></h3></b></td>
       </tr>
       <tr height="15" bgcolor='#CFECEC'>
        <td><b>From :</td>
        <td><label for="login"><%= info.getsendfrom() %></label></td>
       </tr>
       <tr height="15" bgcolor='#CFECEC'>
        <td><b>TO :</td>
        <td><input type='text' name='sendto' class='Large' value='<%= message[messageno].getFrom()[0]  %>' /></b>separate addresses with commas</td>
       </tr>
       <tr height="15" bgcolor='#CFECEC'>
        <td><b  >CC :</td>
        <td><input type='text' name='cc' class='Large' /></b></td>
       </tr>
       <tr height="15" bgcolor='#CFECEC'>
        <td><b>Subject :</td>
        <td><input type='text' name='subject' class='Large' value='Re : <%=subject%>' /></td>
       </tr>


<%

MimeMessage reply = (MimeMessage) message[messageno].reply(false);

Multipart multipart=(Multipart)message[messageno].getContent();

for(int i=0;i<multipart.getCount();i++)
{
    BodyPart bodypart = multipart.getBodyPart(i);

    String disposition = bodypart.getDisposition();

    if(disposition != null && (disposition.equals(BodyPart.ATTACHMENT)))
    {

        //saveFile(bodypart.getFileName(),bodypart.getInputStream());


    String filename=bodypart.getFileName();

    String FilePath="C:\\nikki\\apache-tomcat-7.0.22\\webapps\\Email\\download\\"+filename;
    String FileDownloadPath="\\Email\\download\\"+filename;
    DataHandler dh = bodypart.getDataHandler();
    %>

       <tr height="15" bgcolor='#CFECEC'>

        <td><b>Attachment :</td>
        <td><input type="hidden" name="attachment" value="<%=bodypart.getContent()%>"/><a href="<%=FileDownloadPath%>"><%=filename%></a></td>//**what method should i pass over here to get that file sent with multipart/form-data**
       </tr>
    <%}else{%>

       <tr bgcolor='#CFECEC'>
        <td colspan='2'><textarea id="textAreaa" rows='32' cols='135' name='data'><%=bodypart.getContent()%></textarea></td>
       </tr>
    <%}}%>
       <tr height="15" bgcolor='#CFECEC'>
        <td colspan='2'><input type='submit' class='button' name='Submit' value='Submit'/>
                <input type='submit' class='button' name='Draft' value='Save As Draft'/>
                <input type='reset' class='button' value='Reset' name='Reset'/>
                <input type='reset' class='button' value='Discard' name='Reset'/>
        </td>
       </tr>
    </table>
    </form>
  </center>
  </body>
</html>

1 Ответ

0 голосов
/ 01 декабря 2011

Мне не совсем понятно, что вы пытаетесь сделать ...

Обычно при ответе на сообщение вы не хотите, чтобы в ответ были включены все вложения исходного сообщения.

И в любом случае, вы определенно не хотите отправлять вложение только клиенту браузера, чтобы он мог отправить его обратно вам как вложение. Возможно, вы действительно хотите, чтобы пользователь мог выбрать файл, который будет прикреплен к ответу?

Комплект загрузки JavaMail включает в себя несколько демонстрационных программ, одну на основе сервлета и одну на основе JSP. Вы смотрели на них?

...