利用apache的commons-email发送邮件Demo

先引入maven依赖

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-email</artifactId>
    <version>1.5</version>
</dependency>

/**
 *发送邮箱验证码
 * @param request
 * @param emailNo
 * @return
 */
@RequestMapping("sendEmailCode")
@ResponseBody
public ResultDTO sendEmailCode(HttpServletRequest request,String emailNo,String userName){
    ResultDTO resultDTO = new ResultDTO();
    if (StringUtils.isBlank(emailNo)||StringUtils.isBlank(userName)){
        resultDTO.setMessage("参数非法");
        resultDTO.setCode(1);
    }else{
        //随机生成验证码
        String code = CommonUtils.randomGenerateCode();
        logger.info("验证码:" + code + ",email:" + emailNo+",用户名:"+userName);
        //邮件内容   本地图片地址我获取的路径只到项目名那 所以先拼接 要是有更好的方法请告诉我
        String realPath = request.getSession().getServletContext().getRealPath("logo.png").split("logo.png")[0]
                +"WEB-ROOT/views/"+"logo.png";
        String htmlEmailContent = "<body><div style='width:918px;margin:0 auto;background-color:#fff;padding:15px 26px;'>" +
                "<h2><img src='"+realPath+"'></h2>" +
                "<div style='padding:19px 0 19px 0;border-top:2px solid #f5f5f5;border-bottom:1px solid #f5f5f5'>" +
                "<p style='letter-spacing: 1px;'>亲爱的<span>"+userName+"</span>,您好</p>" +
                "<p style='letter-spacing: 1px;'>你的验证码:</p><div>" +
                "<p style='text-align:center;'><span style='height:36px;line-height: 36px;background-color:#e7e6eb;color:#ffa10b;letter-spacing: 1px;padding:0 8px;font-size:31px;display: inline-block;margin-right:10px;border-radius:4px;'>" +
                code+"</span><i style='letter-spacing: 1px;font-style:normal;'>(10分钟内有效)</i></p></div>" +
                "<p style='letter-spacing: 1px;'>如非本人操作,请忽略此邮件。</p>" +
                "<p style='letter-spacing: 1px;'>这只是一封公告邮件,我们并不监控或回答对此邮件的回复。</p></div>" +
                "<p style='text-align:center;letter-spacing: 1px;'>如有疑问请联系我们:4001150505</p></div>" +
                "</body>";
        ImageHtmlEmail email = new ImageHtmlEmail();//用ImageHtmlEmail来发送
        email.setDebug(true);//可以看到执行过程的debug信息
        email.setCharset("UTF-8");//防止乱码
        email.setSSLCheckServerIdentity(true);
        email.setSslSmtpPort("465"); // 设定SSL端口
        try {
            //解析本地图片和网络图片都有的html文件重点就是下面这两行;
            //ImageHtmlEmail通过setDataSourceResolver来识别并嵌入图片
            //查看DataSourceResolver的继承结构发现有几个好用的子类  用哪个传放哪个就行
            DataSourceResolver[] dataSourceResolvers =
                    new DataSourceResolver[]{new DataSourceFileResolver()};//添加DataSourceUrlResolver用于解析网络图片,注意:new URL("http://")
            //DataSourceCompositeResolver类可以加入多个DataSourceResolver,
            //把需要的DataSourceResolver放到一个数组里传进去就可以了;
            email.setDataSourceResolver(new DataSourceCompositeResolver(dataSourceResolvers));

            email.setHostName("smtp.163.com");
            email.addTo(emailNo, "you");
            email.setFrom("javawuxuenan@163.com", "me");
            email.setAuthenticator(new DefaultAuthenticator("javawuxuenan@163.com", "123456"));
            email.setSubject("测试邮件");
            email.setHtmlMsg(htmlEmailContent);
            email.setTextMsg("你的邮箱客户端不支持HTML格式邮件");
            email.send();
            resultDTO.setData(code);
            resultDTO.setMessage("发送验证码成功");
            resultDTO.setCode(0);
        } catch (EmailException e) {
            logger.error(e.getMessage());
            resultDTO.setMessage("系统异常");
            resultDTO.setCode(1);
        }
    }
    return resultDTO;
}
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值