2011-11-26 48 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");