📄 receivemimemail.txt
字号:
package edu.hg.mail;
import java.io.File;
import java.io.FileOutputStream;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Properties;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ReceiveMimeMail extends HttpServlet{
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
doPost(request,response);
}
protected void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=GB2312");
PrintWriter out=response.getWriter();
String szUser="teacher";
String szPwd="123456";
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='#fofofo'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;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -