📄 receivemimemail.java
字号:
/*
* ReceiveMimeMail.java
*
* Created on 2007年11月29日, 上午10:37
*/
package com.mail;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeUtility;
import javax.servlet.*;
import javax.servlet.http.*;
/**
*
* @author hyl
* @version
*/
public class ReceiveMimeMail extends HttpServlet {
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GB2312");
PrintWriter out = response.getWriter();
String szUser="teacher";
String szPwd="654321";
String szHost="127.0.0.1";
String filepath=" ";
SimpleDateFormat smpDateFormat;
smpDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm");
try{
Properties props = new Properties();
Session mailsession = Session.getDefaultInstance(props, null);//获取会话对象
Store store = mailsession.getStore("pop3"); //获取邮箱
store.connect(szHost,szUser,szPwd);
Folder folder = store.getFolder("INBOX"); //获取收件箱
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages(); //获取信件
if(message.length==0){
//没有邮件
}
int nid=0;
//取得真实发件人地址
String szFrom=((InternetAddress)message[nid].getFrom()[0]).getAddress(); String szSubject=MimeUtility.decodeText(message[nid].getSubject());
String szDate=smpDateFormat.format(message[nid].getSentDate());
String szBody="";
String szAttach="";
out.println("<table border='0' width='100%' cellpadding='2'><tr>");
out.println("<td width='100%' colspan='2' bgcolor='#F0F0F0'>");
out.println("<table border='0' width='100%' cellpadding='2'><tr>");
out.println("<td width='15%' align='center'>发件人 :</td>");
out.println("<td width='85%'><font face='Fixedsys'>" + szFrom +"</font></td></tr>");
out.println("<tr><td align='center'>日 期 :</td>");
out.println("<td><font face='Fixedsys'>" + szDate +"</font></td></tr>");
out.println("<tr><td align='center'>主 题 :</td>");
out.println("<td>"+ szSubject +"</td></tr></table>");
out.println("</td></tr>");
//提取邮件正文內容 //
String szType=message[nid].getContentType();
System.out.println("正文********" + szType);
Object out_content = message[nid].getContent();
if(!(out_content instanceof Multipart)) //无附件
{
szBody=message[nid].getContent().toString();
}else{ //有附件
Multipart mp = (Multipart)message[nid].getContent();
String szFile="";
File ffile;
//String szpath="";
for (int i=0,n=mp.getCount(); i<n; i++) {
Part part = mp.getBodyPart(i);
String szMbp=part.getContentType();
System.out.println("IDX:" + i+ " :类型" + szMbp);
String disposition = part.getDisposition();
if((disposition != null) && ((disposition.equals(Part.ATTACHMENT)||(disposition.equals(Part.INLINE))))){
//创建一个文件,并从输入流中读取字节,,存入到文件中
szFile=MimeUtility.decodeText(part.getFileName());
String fullpath=filepath + szFile;
ffile = new File(fullpath);
FileOutputStream outfile = new FileOutputStream(ffile);
BufferedInputStream br = new BufferedInputStream(part.getInputStream());
BufferedOutputStream bw = new BufferedOutputStream(outfile);
int b;
while ((b = br.read())!= -1) bw.write(b);
bw.flush();
szAttach=szAttach+"<br>" +fullpath ;
}else if(disposition==null){
MimeBodyPart mbp = (MimeBodyPart)part;
if (mbp.isMimeType("text/plain")||mbp.isMimeType("text/html")){ //普通正文
szBody=mbp.getContent().toString();
szBody=szBody.replaceAll("\r\n","<br>");
}else if(mbp.isMimeType("multipart/alternative")) { //HTML正文
szBody=((Multipart)part.getContent()).getBodyPart(0).getContent().toString();
}
}
}
}
System.out.println("內容:" + szBody);
out.println("<tr><td width='75%' height='215' valign='top'>" + szBody +"</td>");
out.println("<td width='25%' bgcolor='#F0F0F0' valign='top'><p align='center'><b>附件</b></p>");
out.println("<p>"+ szAttach +"</p></td>");
out.println("</tr><table>");
//关闭连接
folder.close(false);
store.close();
} catch(javax.mail.MessagingException e){
System.out.println(e.getMessage());
return ;
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
// </editor-fold>
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -