1、簡述
用例執行完成后,可以通過發送電子郵件的方式通知需要看到測試報告的用戶,可以使用Javax.mail完成郵件發送
2、實現發送郵件實例
package com.test.email; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.*; import java.io.File; import java.util.Properties; /** * @author lh * @date 2020/7/16 * @description */ public class SendEmail { //服務器地址 private static final String host = "smtp.163.com"; //傳輸協議 private static final String protocol = "smtp"; //發送人 private static final String from_username = "******@163.com"; //密碼(配置郵箱的授權碼) private static final String from_password = "******"; //收件人 private static final String recipient = "******@qq.com"; //附件 private static final String attach = "test\\report.html"; //html格式 private static final String htmlString = "<a href=#>郵件測試鏈接</a>"; //發送郵件 public static void sendEmail() { try { Session session = SendEmail.createSession(); Message message = SendEmail.createMessage(session); MimeMultipart multipart = new MimeMultipart(); //HTML格式 multipart.addBodyPart(SendEmail.createHtmlContent()); //發送附件 multipart.addBodyPart(SendEmail.createAttach()); //設置文件 message.setContent(multipart); //消息傳輸 Transport transport = session.getTransport(); //設置連接地址 transport.connect(host, from_username, from_password); //發送消息 message.getAllRecipients()獲取郵件的所有收件人地址 transport.sendMessage(message, message.getAllRecipients()); //關閉連接 transport.close(); System.out.println("郵件發送成功!"); } catch (Exception e) { System.out.println("郵件發送失敗!"); } } //創建郵件會話 public static Session createSession(){ //構建properties文件 Properties properties = new Properties(); //郵件協議 properties.setProperty("mail.transport.protocol",protocol); //服務器地址 properties.setProperty("mail.smtp.host",host); //身份認證 properties.put("mail.smtp.auth", "true"); // 設置是否使用ssl安全連接 ---一般都使用 properties.put("mail.smtp.ssl.enable", "true"); //創建郵件會話 Session session = Session.getInstance(properties); return session; } //構建郵件消息 public static Message createMessage(Session session) throws Exception{ MimeMessage message= new MimeMessage(session); //設置主題 message.setSubject("這是一個測試報告"); //設置文本消息 message.setText("這是測試文件,請勿回復!"); //設置發送地址 message.setFrom(new InternetAddress(from_username)); /** *設置收件人地址 * Message.RecipientType.BCC :The "Bcc" (blind carbon copy) recipients.(“密件抄送”接收者) * Message.RecipientType.CC :The "Cc" (carbon copy) recipients.“抄送”接收者 * Message.RecipientType.TO :The "To" (primary) recipients.“收件人”(主要)收件人。 */ message.setRecipients(Message.RecipientType.TO,recipient); return message; } //發送郵件正文內容為HTML格式 public static MimeBodyPart createHtmlContent() throws Exception{ MimeBodyPart bodyPart = new MimeBodyPart(); bodyPart.setContent(htmlString,"text/html;charset=UTF-8"); return bodyPart; } //發送單個附件內容 public static MimeBodyPart createAttach() throws Exception{ MimeBodyPart bodyPart = new MimeBodyPart(); /** * 實現一個封裝文件的簡單 DataSource 對象。它通過 FileTypeMap 對象提供數據分類服務 * FileTypeMap是一個抽象類,為文件提供數據鍵入接口 */ FileDataSource dataSource = new FileDataSource(new File(attach)); /** * 數據處理程序 * 創建引用指定 DataSource 的 DataHandler 實例。數據以字節流的形式存在。 * DataSource 將提供一個 InputStream 來訪問數據 */ DataHandler dataHandler = new DataHandler(dataSource); //添加郵件主體中 bodyPart.setDataHandler(dataHandler); //設置附件名稱,MimeUtility.encodeText可以處理亂碼問題 bodyPart.setFileName(MimeUtility.encodeText(dataSource.getName())); return bodyPart; } //測試 public static void main(String[] args){ SendEmail.sendEmail(); } }
3、上述功能可以在用例執行完成之后,調用該郵件方法,例如:
@AfterTest
public void teardown(){
SendEmail.sendEmail();
System.out.println("用例執行完后執行");
}