?? 09_08.jsp
字號:
<html>
<head>
<title>顯示e-mail的詳細信息</title>
</head>
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="javax.mail.*,java.util.*,java.io.*"%>
<body>
<center><h2>
接收帶附件的e-mail
</h2></center>
<%
//得到要察看的e-mail的編號msg,即要看第幾封e-mail
String msg=request.getParameter("msg");
//得到郵件服務器要驗證的參數
String host=request.getParameter("host");
String user=request.getParameter("user");
String password=request.getParameter("password");
try{
//獲得一個session對象,并設置其屬性為true
Properties props=new Properties();
Session recesession=Session.getInstance(props,null);
recesession.setDebug(true);
//創建一個Store對象,并根據得到的三個參數連接到郵件服務器中的用戶郵箱
Store store=recesession.getStore("pop3");
store.connect(host,user,password);
//打開收件箱
Folder inbox=store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
//根據msg參數得到該e-mail
int imsg=Integer.parseInt(msg);
Message message=inbox.getMessage(imsg);
Address[] address;
%>
<table width=85% align="center">
<tr>
<td>發件人:</td>
<td>
<%
//得到發件人的地址
address=message.getFrom();
if(address!=null)
for(int i=0;i<address.length;i++)
out.print(address[i]+"  ");
else
out.println("無");
%>
</td>
</tr>
<tr>
<td>發送時間:</td>
<td>
<%
//得到e-mail發出的時間
Date sentdate=message.getSentDate();
if(address!=null)
out.print(sentdate.toString());
else
out.println("無");
%>
</td>
</tr>
<tr>
<td>收件人:</td>
<td>
<%
//得到收件人的地址列表
address=message.getRecipients(Message.RecipientType.TO);
if(address!=null)
for(int i=0;i<address.length;i++)
out.print(address[i]+"  ");
else
out.println("無");
%>
</td>
</tr>
<tr>
<td>抄送:</td>
<td>
<%
//得到抄送人的地址
address=message.getRecipients(Message.RecipientType.CC);
if(address!=null)
for(int i=0;i<address.length;i++) {
out.print(address[i]+"  ");
}
else
out.println("無");
%>
</td>
</tr>
<tr>
<td>標題:</td>
<td><%=message.getSubject()%></td>
</tr>
<tr>
<td colspan=2>
<br>  
<%
//body是一個用來標記是否點擊了附件下載鏈接的參數,如果沒有body參數,則只顯示有幾個附件以及它們的下載鏈接
if(request.getParameter("body")==null)
{
//如果是一個多部分內容的e-mail
if(message.isMimeType("multipart/*"))
{
//獲得代表該e-mail的多部分內容的Multipart對象
Multipart multipart = (Multipart)message.getContent();
//依次獲取Multipart對象的每個部分
for(int i = 0;i < multipart.getCount();i++)
{
//得到每個部分的屬性
Part p = multipart.getBodyPart(i);
String disposition = p.getDisposition();
//如果該部分中是附件內容,則輸出該附件的下載鏈接
if ((disposition != null) &&(disposition.equals(Part.ATTACHMENT) || disposition.equals(Part.INLINE)))
{
String filename=p.getFileName();
filename=javax.mail.internet.MimeUtility.decodeText(filename);
%>
<!--傳遞要看第幾封e-mail的第幾個附件-->
<p>
附件:
<a href="09_08.jsp?msg=<%=message.getMessageNumber()%>&host=<%=host%>&user=<%=user%>&password=<%=password%>&body=<%=i%>">
<%=filename%>
</a>
</p>
<%
}
else if(disposition==null)
{
//如果該部分是普通文本內容(無附件),則輸出其文本內容
if(p.isMimeType("text/plain")){
out.print(p.getContent());
}else {
//如果該部分是特殊附件,就不做處理
}
}
}
}
//如果是普通文本形式的e-mail,則顯示其詳細內容
else if(message.isMimeType("text/plain"))
{
out.print(message.getContent());
}
}
//如果有body參數,即表明用戶點擊了附件下載的鏈接,這時就可以下載相應的附件了
else
{
//得到要下載的附件的編號
int attachNo=Integer.parseInt(request.getParameter("body"));
Part p;
//如果編號小于0,則表明是一個單部分的email
if(attachNo<0) p=message;
//否則是一個多部分組成的email,得到附件的對應部分
else{
Multipart multipart=(Multipart)message.getContent();
p=multipart.getBodyPart(attachNo);
}
//設置附件的類型屬性
response.setContentType(p.getContentType());
//生成下載附件的頭信息
String s=p.getFileName();
s=javax.mail.internet.MimeUtility.decodeText(s);
if (p.getFileName()!=null){
response.setHeader("Content-Disposition","attachment; filename=\""+s+"\"");
}
//設置下載過程中的輸入流和輸出流
OutputStream fout=response.getOutputStream();
InputStream fin=p.getInputStream();
//下載附件
int c=fin.read();
while(c!=-1)
{
fout.write(c);
c=fin.read();
}
}
%>
</td>
</tr>
</table>
<%
//關閉收件箱和到郵件服務器的連接
inbox.close(true);
store.close();
}catch(MessagingException m)
{
out.println(m.toString());
}
%>
<p><center>
<a href="09_06.jsp?host=<%=host%>&user=<%=user%>&password=<%=password%>">返回收件箱<a>
</center></p>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -