получить с адреса с помощью API Java? - PullRequest
0 голосов
/ 26 ноября 2011

Сейчас я создаю почтовый клиент, используя javamail API, в котором, когда я нажимаю кнопку Reply, адрес поля From не входит в поле To.

DisplayMessage.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);
    Message[] message = folder.getMessages();
    int count = folder.getMessageCount();
    int unread = folder.getUnreadMessageCount();
    Integer messageno=Integer.parseInt(request.getParameter("messageno"));

%>


<html><head><title>Home Page</title></head>
  <body>

<table width="940" bgcolor="#GSDFES">
<tr><td><input type="submit" name="button" class="button" onclick="javascript:deletemail(<%=messageno%>)" value="Delete"/></td>
<tr><td>From : <%= message[messageno].getFrom()[0]  %></td></tr>
<tr><td>Subject : <%= message[messageno].getSubject() %></td></tr>
<tr><td>Date : <%= message[messageno].getSentDate() %></td></tr>
<tr><td>ContentType : <%= message[messageno].getContentType() %></td></tr>
<tr><td>
<%

InputStream stream = message[messageno].getInputStream();
  while (stream.available() != 0) {
 %>
<%
    char str=((char)stream.read());
    if(str=='\n')
    {   %><br/><% continue;} %>
<%  if(str==' ')
    {   %>&nbsp;<% } %>


<%= str %>
<%
}
%>
</table>
<button class="button" name="reply" onClick="javascript:loadreplymessage(<%=messageno%>)">Reply</button><button class="button" onClick="javascript:loadforwardmessage(<%=messageno%>)" name="forward">Forward</button>
  </body>
</html>

Функция записана в другом файле home.jsp:

function loadcomposemail()
{

if(window.XMLHttpRequest)
{
    xmlhttp=new XMLHttpRequest();

}
else
{
    xmlhttp=new ActiveXObject(Microsoft.XMLHTTP);   
}
xmlhttp.onreadystatechange=function()
    {
    if(xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("tableview").innerHTML=xmlhttp.responseText;
    }
    }

xmlhttp.open("POST","composemail.jsp",true);
xmlhttp.send();
}



function loadreplymessage(i)
{
if(window.XMLHttpRequest)
{
    xmlhttp=new XMLHttpRequest();

}
else
{
    xmlhttp=new ActiveXObject(Microsoft.XMLHTTP);   
}
xmlhttp.onreadystatechange=function()
    {
    if(xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("tableview").innerHTML=xmlhttp.responseText;
    }
    }

xmlhttp.open("POST","composereplymail.jsp?messageno="+i,true);
xmlhttp.send();
}

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");


    Folder folder=store.getFolder(info.getUrl());
    int count = folder.getMessageCount();
    int unread = folder.getUnreadMessageCount();
    Integer messageno=Integer.parseInt(request.getParameter("messageno"));
    Message[] message = folder.getMessages();
    String ssubject=message[messageno].getSubject();
    **//String from=message[messageno].getFrom()[0]; //program stops working when uncomment this line**

%>

<html><head>
<title>Home Page</title>
<link rel="stylesheet" type="text/css" href="styleforcomposemail.css" />
</head>
  <body>
<center>
<form action='sendmail' method='post'>
    <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='' /></b>Add "," For Sending Multiple Mails</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 : <%=ssubject%>' /></td>
       </tr>


       <tr bgcolor='#CFECEC'>

        <td colspan='2'><textarea id="textAreaa" onmouseover="javascript:setTextToTextArea('<%=data%>')" rows='32' cols='135' name='data' on>

        Display Message Data here...come on..!!



        </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>

Ответы [ 2 ]

3 голосов
/ 26 ноября 2011

Метод getFrom () возвращает массив объектов Address, а не массив строк.Попробуйте:

String from=message[messageno].getFrom()[0].toString();

Кроме того, ваша программа пропускает все виды обработки ошибок.В частности, некоторые сообщения могут не иметь адреса отправителя.

0 голосов
/ 29 мая 2015

Другой способ получить данные из форм - создать идентификатор каждого поля и получить с помощью getParameter (): request.getParameter("field-id");

Пример: String subject = request.getParameter("subject");

...