• Java接口自动化测试(七) — 发送邮件


    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("用例执行完后执行");
    }
  • 相关阅读:
    局域网内其他主机如何访问运行在宿主机的虚拟机中的Django项目(转)
    python3脚本获取本机公网ip
    django之允许外部机器访问
    Mysql命令drop database:删除数据库
    CentOS和Windows下配置MySQL远程访问的教程
    Windows 下 MySql 5.7.20安装及data和my.ini文件的配置(转)
    远程登陆linux连接mysql root账号报错:2003-can't connect to MYSQL serve(转)
    Mysql创建用户并授权以及开启远程访问
    Android 之 自定义标签 和 自定义组件
    再探java基础——零碎基础知识整理
  • 原文地址:https://www.cnblogs.com/liho/p/13397854.html
Copyright © 2020-2023  润新知