2011-11-26 46 views
0

现在我正在使用javamail API创建电子邮件客户端,其中当我点击Reply按钮时,From字段的地址不在To字段中。使用javamail api获取地址?

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> 
+0

您是否尝试过调试调用GETFROM时,你会得到什么()方法?你收到什么错误信息? –

回答

3

的GETFROM()方法返回地址对象的数组,而不是一个字符串数组。 尝试:

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

而且,你的程序缺少各种错误处理。特别是, 某些消息可能没有发件人地址。

+0

感谢您的回复,它的工作原理是value ='<%= message [messageno] .getFrom()[0]' –

0

另一种方法是从形式获取数据是创建每个字段的ID和的getParameter()得到:request.getParameter("field-id");

例子:String subject = request.getParameter("subject");