郵件發送工具

代碼如下:



import com.es.util.utilpojo.Order;
import lombok.extern.slf4j.Slf4j;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;


@Slf4j
public class EmailUtil {
    public String execute(Order order) {
        try {
            String to[]=order.getAddressee().split(";");
            String host = "smtp.exmail.qq.com";//郵件主機地址
            Properties props = new Properties();
            props.put("mail.transport.protocol", "smtp");// 連接協議
            props.put("mail.smtp.host", host);// 主機名
            props.put("mail.smtp.port", 465);// 端口號
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.ssl.enable", "true");// 設置是否使用ssl安全連接 ---一般都使用
            props.put("mail.debug", "true");// 設置是否顯示debug信息 true 會在控制檯顯示相關信息
            // 得到回話對象
            Session mailSession = Session.getInstance(props);
            // 獲取郵件對象
            MimeMessage mailMessage = new MimeMessage(mailSession);
            // 設置發件人郵箱地址
            mailMessage.setFrom(new InternetAddress("[email protected]"));

            //設置收信人
            Address[] toAddr = new InternetAddress[to.length];
            for (int i = 0; i < to.length; i++) {
                toAddr[i] = new InternetAddress(to[i]);
            }
            mailMessage.setRecipients(Message.RecipientType.TO, toAddr);

            //設置抄送人
            if(order.getCcemail()!=null&&order.getCcemail().length()>0){
                String cc[]=order.getCcemail().split(";");
                Address[] ccAddr = new InternetAddress[cc.length];
                for (int i = 0; i < cc.length; i++) {
                    ccAddr[i] = new InternetAddress(cc[i]);
                }
                mailMessage.setRecipients(Message.RecipientType.CC, ccAddr);
            }
            mailMessage.setSubject(order.getSubject());
            mailMessage.setSentDate(new java.util.Date());
            //MiniMultipart類是一個容器類,包含MimeBodyPart類型的對象
            Multipart mainPart = new MimeMultipart();
            //創建一個包含HTML內容的MimeBodyPart
            BodyPart html = new MimeBodyPart();
            //設置HTML內容

            html.setContent(order.getBody(), "text/html; charset=utf-8");
            mainPart.addBodyPart(html);
            // 將MiniMultipart對象設置爲郵件內容
            mailMessage.setContent(mainPart);
            mailMessage.saveChanges();

            //發送郵件
            Transport transport = mailSession.getTransport("smtp");
            log.info("======開始連接郵箱服務器");
            transport.connect(host, "[email protected]", "Timer123");
            log.info("======連接郵箱服務器成功");
            transport.sendMessage(mailMessage, mailMessage.getAllRecipients());
            transport.close();
            log.info("======關閉連接郵箱服務器");
        }catch(Exception e) {
            log.error("Send to ["+order.getAddressee()+" "+order.getCcemail()+"] error: "+e);
        }
        return null;
    }


    public static void main(String[] args) {
        EmailUtil handler = new EmailUtil();
        Order order = new Order();
        order.setSender("[email protected]");//發送人郵箱
        order.setAddressee("[email protected]");//收信人郵箱,多個收信人之間;號間隔
        order.setCcemail("[email protected]");//抄送人郵箱,多個抄送人之間;號間隔
        order.setSubject("測試標題");//標題
        order.setBody("測試正文");//正文
        handler.execute(order);
    }

}

Order類



import lombok.Data;

@Data
public class Order {

    private String sender;//發信人
    private String addressee;//收信人郵箱,多個收信人之間;號間隔
    private String ccemail;//抄送人郵箱,多個抄送人之間;號間隔
    private String subject;//標題
    private String body;//正文

}

 

輸出結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章