邮箱发送短信的多种方式

第一种:邮箱验证方法:

导入依赖:


            org.springframework.boot
            spring-boot-starter-mail

        

        
            org.springframework.boot
            spring-boot-starter-thymeleaf

        

代码的实现

创建一个application.yml 文件

小提示:

一般用邮箱发送短信用 QQ 邮箱;(163 邮箱会过滤掉垃圾文件),所以 QQ 文件比较稳定

spring:
    mail:
    #邮件服务器地址
    host: smtp.qq.com
    #协议
    protocol: smtp
    #编码格式
    default-encoding: utf-8
    #授权码
    password: jhgqhedbdyvcdhdj
    #邮箱名称
    username: [email protected]
    #端口号
    port: 587

实现的代码

 //邮箱相关的配置(内容,收件人,等附件信息)
    @Resource
    private JavaMailSender javaMailSender;
    //邮箱相关的配置(邮箱服务主机名称,端口等)
    @Resource
    private MailProperties mailProperties;
    //模版
    @Resource
    private TemplateEngine templateEngine;

    public void EmailTopicListener(TEmployee tEmployee){
        System.out.println("获取的结果:"+tEmployee);
        /**
         * 业务内容
         */
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
        //添加内容
        try {
            //发件人
            mimeMessageHelper.setFrom(mailProperties.getUsername());
            System.out.println("发件人:"+mailProperties.getUsername());
            //收件人
            mimeMessageHelper.setTo(tEmployee.getEmail());
            //主题
            mimeMessageHelper.setSubject("入职欢迎邮件");
            //发送日期
            mimeMessageHelper.setSentDate(new Date());
            //邮箱页面模板(thymeleaf模版)
            Context context =new Context();
            context.setVariable("name",tEmployee.getName());
            context.setVariable("posName",tEmployee.gettPosition().getName());
            context.setVariable("joblevelName",tEmployee.gettJoblevel().getName());
            context.setVariable("departmentName",tEmployee.gettDepartment().getName());
            String email = templateEngine.process("mail", context);
            //邮件内容
            mimeMessageHelper.setText(email,true);
            //发送邮件
            javaMailSender.send(mimeMessage);
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }

第二种:邮箱验证方法

导入依赖:


        
            com.sun.mail
            javax.mail
            1.6.2
        
        
            javax.activation
            activation
            1.1.1
        

代码的实现:

  // 收件人电子邮箱
        String to = toEail;

        // 发件人电子邮箱
        String from = "[email protected]";

        // 生成的授权码
        String password = "jhgqhedbdyvcdhdj";

        // 指定发送邮件的主机为 smtp.qq.com
        String host = "smtp.qq.com";  //QQ 邮件服务器

        // 获取系统属性
        Properties properties = System.getProperties();

        // 设置邮件服务器
        properties.setProperty("mail.smtp.host", host);

        properties.put("mail.smtp.auth", "true");

        // 获取默认的 Session 对象。
        // 获取默认session对象
        Session session = Session.getDefaultInstance(properties,new Authenticator(){
            public PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication(from, password); //发件人邮件用户名、授权码
            }
        });

        // 设置debug模式便于调试:
//        session.setDebug(true);

        try{
            // 创建默认的 MimeMessage 对象。
            MimeMessage message = new MimeMessage(session);

            // Set From: 头部头字段
            message.setFrom(new InternetAddress(from));

            // Set To: 头部头字段
            message.addRecipient(Message.RecipientType.TO,
                    new InternetAddress(to));

            // Set Subject: 头字段
            message.setSubject("空门 控股集团","UTF-8");

            // 发送 HTML 消息, 可以插入html标签

            String generatedCode = code;   // 假设后台生成的验证码
            String emailBody = vericodeHtml.replace(":data=\"123456\"", ":data=\"" + generatedCode + "\"").replace("1EM456", generatedCode); //将发送页面的验证码改为后台生成的验证码

            message.setText(emailBody, "UTF-8", "html");
            try {
            // 发送消息
            Transport.send(message);
                //休眠
                TimeUnit.MILLISECONDS.sleep(100);
                //todo 如果发送成功将code保存到redis,防止恶意请求

                log.info("---red保存成功----");
            } catch (InterruptedException e) {
                return false;
            }
            return true;
        }catch (MessagingException mex) {
            return false;
        }

public static String vericodeHtml = "\n" +
            "\n" +
            "\n" +
            "    \n" +
            "    空门控股集团 邮箱验证码\n" +
            "    \n" +
            "\n" +
            "\n" +
            "
\n" + "
空门控股集团 邮箱账号验证码
\n" + "
你正在进行邮箱验证操作,验证码为:
\n" + "
1EM456
\n" + "\n" + "
\n" + "
    \n" + "
  • 此验证码 15 分钟内有效
  • \n" + "
  • 如非本人操作
  • \n" + "
  • 转给他人将导致账号被盗和个人信息泄漏,谨防诈骗
  • \n" + "
\n" + "
\n" + "\n" + "
\n" + " 空门集团 - 昨夜西风凋碧树,独上高楼,望尽天涯路。 --蝶恋花·槛菊愁烟兰泣露\n" + "
\n" + "
\n" + "\n" + "";

你可能感兴趣的:(java,java,前端,开发语言)