01_JavaMail_05_創建郵件工具類MailUtils等方便發送郵件


【工程截圖】

 

【代碼實現】

【Mail.java】

package com.Higgin.Utils;

import java.util.ArrayList;
import java.util.List;

/**
 * 表示郵件類,你需要設置:賬戶名和密碼、收件人、抄送(可選)、暗送(可選)、主題、內容,以及附件(可選)
 * 
 * 在創建了Mail對象之后
 * 可以調用它的setSubject()、setContent(),設置主題和正文
 * 也可以調用setFrom()和 addToAddress(),設置發件人,和添加收件人。
 * 也可以調用addAttch()添加附件
 * 創建AttachBean:new AttachBean(new File("..."), "fileName");
 */
public class Mail {
    private String from;  //發件人
    private StringBuilder toAddress = new StringBuilder();  //收件人
    private StringBuilder ccAddress = new StringBuilder();  //抄送
    private StringBuilder bccAddress = new StringBuilder();  //暗送
    
    private String subject;//主題
    private String content;//正文
    
    // 附件列表
    private List<AttachBean> attachList = new ArrayList<AttachBean>();
    
    public Mail() {}
    
    public Mail(String from, String to) {
        this(from, to, null, null);
    }
    
    public Mail(String from, String to, String subject, String content) {
        this.from = from;
        this.toAddress.append(to);
        this.subject = subject;
        this.content = content;
    }
    
    /**
     * 返回發件人
     * @return
     */
    public void setFrom(String from) {
        this.from = from;
    }
    
    /**
     * 返回發件人
     * @return
     */
    public String getFrom() {
        return from;
    }
    
    /**
     * 返回主題
     */
    public String getSubject() {
        return subject;
    }

    /**
     * 設置主題
     */
    public void setSubject(String subject) {
        this.subject = subject;
    }

    /**
     * 獲取主題內容
     */
    public String getContent() {
        return content;
    }

    /**
     * 設置主題內容
     * @param content
     */
    public void setContent(String content) {
        this.content = content;
    }

    /**
     * 獲取收件人
     * @return
     */
    public String getToAddress() {
        return toAddress.toString();
    }

    /**
     * 獲取抄送
     * @return
     */
    public String getCcAddress() {
        return ccAddress.toString();
    }

    /**
     * 獲取暗送
     * @return
     */
    public String getBccAddress() {
        return bccAddress.toString();
    }

    /**
     * 添加收件人,可以是多個收件人
     * @param to
     */
    public void addToAddress(String to) {
        if(this.toAddress.length() > 0) {
            this.toAddress.append(",");
        }
        this.toAddress.append(to);
    }

    /**
     * 添加抄送人,可以是多個抄送人
     * @param cc
     */
    public void addCcAddress(String cc) {
        if(this.ccAddress.length() > 0) {
            this.ccAddress.append(",");
        }
        this.ccAddress.append(cc);
    }

    /**
     * 添加暗送人,可以是多個暗送人
     * @param bcc
     */
    public void addBccAddress(String bcc) {
        if(this.bccAddress.length() > 0) {
            this.bccAddress.append(",");
        }
        this.bccAddress.append(bcc);
    }
    
    /**
     * 添加附件,可以添加多個附件
     * @param attachBean
     */
    public void addAttach(AttachBean attachBean) {
        this.attachList.add(attachBean);
    }
    
    /**
     * 獲取所有附件
     * @return
     */
    public List<AttachBean> getAttachs() {
        return this.attachList;
    }
}

【AttachBean.java】

package com.Higgin.Mail.Utils;

import java.io.File;
/**
 * 發送附件用
 */
public class AttachBean {
    private String cid;
    private File file;
    private String fileName;

    public String getCid() {
        return cid;
    }

    public void setCid(String cid) {
        this.cid = cid;
    }
    
    public File getFile() {
        return file;
    }

    public void setFile(File file) {
        this.file = file;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public AttachBean() {

    }

    public AttachBean(File file, String fileName) {
        super();
        this.file = file;
        this.fileName = fileName;
    }
}

【MailUtils.java】

package com.Higgin.Utils;

import java.io.IOException;
import java.util.List;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

/**
 * 郵件工具類
 * @author YH
 *
 */
public class MailUtils {
    public static Session createSession(String host, final String username, final String password) {
        Properties prop = new Properties();
        prop.setProperty("mail.host", host);        // 指定主機
        prop.setProperty("mail.smtp.auth", "true"); // 指定驗證為true

        // 創建驗證器
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        };
        
        // 獲取session對象
        return Session.getInstance(prop, auth);
    }
    
    /**
     * 發送指定的郵件
     * 
     * @param mail
     */
    public static void send(Session session, final Mail mail) throws MessagingException,
            IOException {

        MimeMessage msg = new MimeMessage(session);// 創建郵件對象
        msg.setFrom(new InternetAddress(mail.getFrom()));// 設置發件人
        msg.addRecipients(RecipientType.TO, mail.getToAddress());// 設置收件人

        // 設置抄送
        String cc = mail.getCcAddress();
        if (!cc.isEmpty()) {
            msg.addRecipients(RecipientType.CC, cc);
        }

        // 設置暗送
        String bcc = mail.getBccAddress();
        if (!bcc.isEmpty()) {
            msg.addRecipients(RecipientType.BCC, bcc);
        }

        msg.setSubject(mail.getSubject());// 設置主題

        MimeMultipart parts = new MimeMultipart();// 創建部件集對象

        MimeBodyPart part = new MimeBodyPart();// 創建一個部件
        part.setContent(mail.getContent(), "text/html;charset=utf-8");// 設置郵件文本內容
        parts.addBodyPart(part);// 把部件添加到部件集中
        
        ///////////////////////////////////////////

        // 添加附件
        List<AttachBean> attachBeanList = mail.getAttachs();// 獲取所有附件
        if (attachBeanList != null) {
            for (AttachBean attach : attachBeanList) {
                MimeBodyPart attachPart = new MimeBodyPart();// 創建一個部件
                attachPart.attachFile(attach.getFile());// 設置附件文件
                attachPart.setFileName(MimeUtility.encodeText(attach
                        .getFileName()));// 設置附件文件名
                String cid = attach.getCid();
                if(cid != null) {
                    attachPart.setContentID(cid);
                }
                parts.addBodyPart(attachPart);
            }
        }

        msg.setContent(parts);// 給郵件設置內容
        Transport.send(msg);// 發郵件
    }
}

【MailUtilsTest.java】測試類

package com.Higgin.Mail.Demo;

import java.io.IOException;
import javax.mail.MessagingException;
import javax.mail.Session;
import org.junit.Test;

import com.Higgin.Mail.Utils.Mail;
import com.Higgin.Mail.Utils.MailUtils;



public class MailUtilsTest {
    /*** 發郵件 
     * @throws IOException 
     * @throws MessagingException ***/
    @Test
    public void sendMail() throws MessagingException, IOException{
        /**
         * 1.登錄郵件服務器
         *     MailUtils.createSession(服務器地址,登錄名,密碼);
         * 2.創建郵件對象
         *     發件人
         *     收件人
         *     主題
         *     正文
         * 3.發郵件
         *     需要第1步得到的session 以及 第2步的郵件對象
         */
     
        Session session=MailUtils.createSession("smtp.163.com", "Higgin", "123456");
        //public Mail(String from, String to, String subject, String content)
        Mail mail=new Mail("higgin1@163.com","higgin2@126.com","測試郵件標題啊","郵件內容啊");
        //發送
        MailUtils.send(session, mail);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM