邮箱发送——使用spring自带的JavaMailSenderImpl实现邮件发送

1.在yml配置文件添加相关配置(mail是在spring配置下的)

 host:是你选择发送邮箱服务器的地址

        例子:发送qq邮件服务器:smtp.qq.com

 port:发送邮箱服务器的端口

        例子:发送qq邮件服务器端口号:465或587

 username:邮箱账号

 password:邮箱密码

 2.EmailUtil

上代码!!!!!!!!!


    //注入MailSender
    private static JavaMailSenderImpl mailSender;

    /**
     * 初始化发送服务器
     */
    private void initSmtpMail(SendTextMailDto sendMailDto) {

        mailSender = new JavaMailSenderImpl();
        mailSender.setHost(sendMailDto.getHost());
        mailSender.setPort(sendMailDto.getPort());
        mailSender.setUsername(sendMailDto.getUsername());
        mailSender.setPassword(sendMailDto.getPassword());
        mailSender.setProtocol(sendMailDto.getProtocol());
        mailSender.setDefaultEncoding(sendMailDto.getDefaultEncoding());
    }

    /**
     * 发送文本邮件
     *
     * @param sendMailDto 邮件对象(收件人,邮件主题,邮件内容)
     */
    public void sendSimpleTextMailActual(SendTextMailDto sendMailDto) {
        //初始化发送服务器
        initSmtpMail(sendMailDto);
        //检验参数:邮件主题、收件人、邮件内容必须不为空才能够保证基本的逻辑执行
        if (sendMailDto == null) {
            throw new BizException("发送邮件不可以为空");
        }
        if (sendMailDto.getSubject() == null || sendMailDto.getMailTo() == null || sendMailDto.getContent() == null) {
            log.error("邮件-> {} 无法继续执行,因为缺少基本的参数:邮件主题、收件人、邮件内容", sendMailDto.getSubject());
            throw new BizException("邮件无法继续发送,因为缺少必要的参数!");
        }

        String[] toWho = sendMailDto.getMailTo().split(",");
        if (toWho.length == 0) {
            throw new BizException("邮件无法继续发送,因为缺少必要的参数!");
        }
            //创建一个简单邮件信息对象
            SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
            //设置邮件的基本信息
            handleBasicInfo(simpleMailMessage, sendMailDto.getSubject(), sendMailDto.getContent(), toWho,sendMailDto);
            //发送邮件
            mailSender.send(simpleMailMessage);
            log.info("发送邮件成功: 主题->{}", sendMailDto.getSubject(), toWho);
    }


    /**
     * 用于填充简单文本邮件的基本信息
     *
     * @param simpleMailMessage:文本邮件信息对象
     * @param subject:邮件主题
     * @param content:邮件内容
     * @param toWho:收件人
     */
    public void handleBasicInfo(SimpleMailMessage simpleMailMessage, String subject, String content, String[] toWho,SendTextMailDto sendMailDto) {
        //设置发件人
        simpleMailMessage.setFrom(sendMailDto.getUsername());
        //设置邮件的主题
        simpleMailMessage.setSubject(subject);
        //设置邮件的内容
        simpleMailMessage.setText(content);
        //设置邮件的收件人
        simpleMailMessage.setTo(toWho);
    }

 3.Controller


    @Value("${spring.mail.host}")
    private  String HOST;
    @Value("${spring.mail.port}")
    private   Integer PORT ;
    @Value("${spring.mail.username}")
    private   String USERNAME ;
    @Value("${spring.mail.password}")
    private   String PASSWORD ;
    @Value("${spring.mail.protocol}")
    private  String protocol;
    @Value("${spring.mail.default-encoding}")
    private   String defaultEncoding;

  @ApiOperation("获取邮箱注册验证码")
    @RequestMapping(value = "/a",method = RequestMethod.GET)
    @ResponseBody
    public CommonResult a(@RequestParam String email)  {
        SendTextMailDto sendTextMailDto = new SendTextMailDto();
        sendTextMailDto.setHost(HOST);
        sendTextMailDto.setPassword(PASSWORD);
        sendTextMailDto.setPort(PORT);
        sendTextMailDto.setProtocol(protocol);
        sendTextMailDto.setUsername(USERNAME);
        sendTextMailDto.setDefaultEncoding(defaultEncoding);
        sendTextMailDto.setMailTo(email);
        return memberService.emailCode(sendTextMailDto);
    }

4.在yml配置文件里面添加redis配置

 5.service

  /**
     * 获取邮箱注册验证码
     * @param sendTextMailDto 发送邮箱需要的参数
     * @return
     */
    CommonResult emailCode(SendTextMailDto sendTextMailDto);

6.serviceImpl

 

ending!!!!!!!!!!!ok!!!!!!! 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值