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

📄 mail.java

📁 JSP常用模块源代码之用户管理模块的全部源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package service;
import java.io.*;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*; 
import java.util.*;
import java.text.*;
/**
 * @author myte
 */
public class Mail {
    private MimeMessage mimeMessage = null; 
    private String saveAttachPath = "";          //附件下载后的存放目录 
    private StringBuffer bodytext = new StringBuffer(); //存放邮件内容的StringBuffer对象 
    private String dateformat = "yy-MM-dd HH:mm";       //默认的日前显示格式      
    /** 
     * 构造函数,初始化一个MimeMessage对象 
     */ 
    public Mail(){} 
    public Mail(MimeMessage mimeMessage){ 
        this.mimeMessage = mimeMessage; 
        System.out.println("开始创建邮件........"); 
    } 
    public void setMimeMessage(MimeMessage mimeMessage){ 
        this.mimeMessage = mimeMessage; 
    }     
    /** 
     * 获得发件人的地址和姓名 
     */ 
    public String getFrom()throws Exception{ 
        InternetAddress address[] = (InternetAddress[])mimeMessage.getFrom(); 
        String from = address[0].getAddress(); 
        if(from == null) from=""; 
        String personal = address[0].getPersonal(); 
        if(personal == null) personal=""; 
        String fromaddr = personal+"<"+from+">";
        if (fromaddr.length()<=0)fromaddr="[无]";
        return fromaddr; 
    }
    /** 
     * 获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同 
     * "to"----收件人 "cc"---抄送人地址 "bcc"---密送人地址 
     */ 
    public String getMailAddress(String type)throws Exception{ 
        String mailaddr = ""; 
        String addtype = type.toUpperCase(); 
        InternetAddress []address = null; 
        if(addtype.equals("TO") || addtype.equals("CC") ||addtype.equals("BCC")){ 
            if(addtype.equals("TO")){ 
                address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.TO); 
            }else if(addtype.equals("CC")){ 
                address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.CC); 
            }else{ 
                address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.BCC); 
            } 
            if(address != null){ 
                for(int i=0;i<address.length;i++){ 
                    String email=address[i].getAddress(); 
                    if(email==null) email=""; 
                    else{ 
                        email=MimeUtility.decodeText(email); 
                    } 
                    String personal=address[i].getPersonal(); 
                    if(personal==null) personal=""; 
                    else{ 
                        personal=MimeUtility.decodeText(personal); 
                    } 
                    String compositeto=personal+"&lt;"+email+"&gt;"; 
                    mailaddr+=","+compositeto; 
                } 
                mailaddr=mailaddr.substring(1); 
            } 
        }else{ 
            throw new Exception("错误的邮件地址!"); 
        }
        return mailaddr; 
    }      
    /** 
     * 获得邮件主题 
     */ 
    public String getSubject()throws MessagingException{ 
        String subject = ""; 
        try{ 
            subject = MimeUtility.decodeText(mimeMessage.getSubject()); 
            if(subject.length()<=0) subject="[无主题]"; 
        }catch(Exception exce){ 
        }
        return subject; 
    }      
    /** 
     * 获得邮件发送日期 
     */ 
    public String getSentDate()throws Exception{ 
        Date sentdate = mimeMessage.getSentDate(); 
        SimpleDateFormat format = new SimpleDateFormat(dateformat); 
        return format.format(sentdate); 
    }      
    /** 
     * 获得邮件正文内容 
     */ 
    public String getBodyText(){ 
        return bodytext.toString(); 
    }      
    /** 
     * 解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件 
     * 主要是根据MimeType类型的不同执行不同的操作,一步一步的解析 
     */ 
    public void getMailContent(Part part)throws Exception{ 
        String contenttype = part.getContentType(); 
        int nameindex = contenttype.indexOf("name"); 
        boolean conname =false; 
        if(nameindex != -1) conname=true; 

        System.out.println("CONTENTTYPE: "+contenttype); 
        if(part.isMimeType("text/plain") && !conname){ 
            bodytext.append((String)part.getContent()); 
        }else if(part.isMimeType("text/html") && !conname){ 
            bodytext.append((String)part.getContent()); 
        }else if(part.isMimeType("multipart/*")){ 
            Multipart multipart = (Multipart)part.getContent(); 
            int counts = multipart.getCount(); 
            for(int i=0;i<counts;i++){ 
                getMailContent(multipart.getBodyPart(i)); 
            } 
        }else if(part.isMimeType("message/rfc822")){ 
            getMailContent((Part)part.getContent()); 
        }else{} 
    } 
    /** 
     * 判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false" 
     */ 
    public boolean getReplySign()throws MessagingException{ 
        boolean replysign = false; 
        String needreply[] = mimeMessage.getHeader("Disposition-Notification-To"); 
        if(needreply != null){ 
            replysign = true; 
        } 
        return replysign; 
    }      
    /** 
     * 获得此邮件的Message-ID 
     */ 
    public String getMessageId()throws MessagingException{ 
        return mimeMessage.getMessageID(); 
    }      
    /** 
     * 【判断此邮件是否已读,如果未读返回返回false,反之返回true】 
     */ 
    public boolean isNew()throws MessagingException{ 
        boolean isnew = false; 
        Flags flags = ((Message)mimeMessage).getFlags(); 
        Flags.Flag []flag = flags.getSystemFlags(); 
        System.out.println("标志长度: "+flag.length); 
        for(int i=0;i<flag.length;i++){ 
            if(flag[i] == Flags.Flag.SEEN){ 
                isnew=true; 
                System.out.println("查看邮件......."); 
                break; 
            } 
        } 
        return isnew; 
    }      
    /** 
     * 判断此邮件是否包含附件 
     */ 
    public boolean isContainAttach(Part part)throws Exception{ 
        boolean attachflag = false; 
        String contentType = part.getContentType(); 
        if(part.isMimeType("multipart/*")){ 
            Multipart mp = (Multipart)part.getContent(); 
            for(int i=0;i<mp.getCount();i++){ 
                BodyPart mpart = mp.getBodyPart(i); 
                String disposition = mpart.getDisposition(); 
                if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE)))) 
                    attachflag = true; 
                else if(mpart.isMimeType("multipart/*")){ 
                    attachflag = isContainAttach((Part)mpart); 
                }else{ 
                    String contype = mpart.getContentType(); 
                    if(contype.toLowerCase().indexOf("application") != -1) attachflag=true; 
                    if(contype.toLowerCase().indexOf("name") != -1) attachflag=true; 
                } 
            } 
        }else if(part.isMimeType("message/rfc822")){ 
            attachflag = isContainAttach((Part)part.getContent()); 
        } 
        return attachflag; 
    }      
    /** 
     * 【保存附件】 
     */ 
    public void saveAttachMent(Part part)throws Exception{ 
        String fileName = ""; 
        if(part.isMimeType("multipart/*")){ 
            Multipart mp = (Multipart)part.getContent(); 
            for(int i=0;i<mp.getCount();i++){ 
                BodyPart mpart = mp.getBodyPart(i); 
                String disposition = mpart.getDisposition(); 
                if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE)))){ 
                    fileName = mpart.getFileName(); 
                    if(fileName.toLowerCase().indexOf("gb2312") != -1){ 
                        fileName = MimeUtility.decodeText(fileName); 
                    }
                    saveFile(fileName,mpart.getInputStream()); 
                }else if(mpart.isMimeType("multipart/*")){ 
                    saveAttachMent(mpart); 
                }else{ 
                    fileName = mpart.getFileName(); 
                    if((fileName != null) && (fileName.toLowerCase().indexOf("GB2312") != -1)){ 
                        fileName=MimeUtility.decodeText(fileName); 
                        saveFile(fileName,mpart.getInputStream()); 
                    } 
                } 
            } 
        }else if(part.isMimeType("message/rfc822")){ 
            saveAttachMent((Part)part.getContent()); 
        } 
    }     
    /** 
     * 【获取附件名】 
     */ 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -