⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receivemimemail.java

📁 介绍了j2ee开发常用的学习知识,如servlet,javamail,EJB等知识,并有项目源码.
💻 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'>日&nbsp;&nbsp;&nbsp; 期 :</td>");
            out.println("<td><font face='Fixedsys'>" + szDate +"</font></td></tr>");
            out.println("<tr><td align='center'>主&nbsp;&nbsp;&nbsp; 题 :</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 + -