UI自动化测试结束后,需要把测试结果发送给相关人员。以下方法实现发送邮件功能。
package tools;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
public class SendMail {
static int port = 25;
static String server = "smtp.sina.com";// 邮件服务器smtp.sina.com
static String author = "autotest";// 发送者,显示的发件人名字
static String fromAdd = "uitest@sina.com";// 发送者邮箱地址jdd_test@sina.com
static String password = "uipass";// 密码
//原打算把发送服务器信息作为方法入参,后考虑发送服务器多数情况下是固定的,无需经常变动,故在代码内写死。即使使用过程中修改,对于略懂JAVA的人也不是难事。
public static void sendEmail(String toAdd, String subject, String body)//toAdd接收邮件的油箱地址,subject邮件标题,body邮件内容
throws UnsupportedEncodingException {
try {
Properties props = new Properties();
props.put("mail.smtp.host", server);
props.put("mail.smtp.port", String.valueOf(port));
props.put("mail.smtp.auth", "true");
Transport transport = null;
Session session = Session.getDefaultInstance(props, null);
transport = session.getTransport("smtp");
transport.connect(server, fromAdd, password);
MimeMessage msg = new MimeMessage(session);
msg.setSentDate(new Date());
InternetAddress fromAddress = new InternetAddress(fromAdd, author,
"UTF-8");
msg.setFrom(fromAddress);
InternetAddress[] toAddress = new InternetAddress[1];
toAddress[0] = new InternetAddress(toAdd);
msg.setRecipients(Message.RecipientType.TO, toAddress);
msg.setSubject(subject, "UTF-8");
msg.setText(body, "UTF-8");
msg.saveChanges();
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
😎很多邮件服务器出于安全考虑,默认下SMTP没有打开。需要手动打开,或参考相关邮件服务器文档进行配置。
网友评论