SpringBoot发送邮件服务,自定义发送人,以及附件名称过长的乱码问题。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csdnwodeboke/article/details/80110612

SpringBoot自带了mail相关的功能

一、导入依赖

    		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
		</dependency>

二、首先保证你要使用的邮箱得开通POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

开通后会返回一个授权码code,记住这个code;

三、在application.yml中进行相关配置

spring:
  mail:
    host: smtp.qq.com		#(邮箱服务器)
    username: [email protected]	#(发送邮件的邮箱服务地址)
    password: xxxxxx	        #(上面获取的授权码code)
    port: 465			#(端口)
    default-encoding: UTF-8
    protocol: smtp
    properties:
      mail:
        smtp:
          ssl:
            enable: true

四、开始写测试方法

1、发送简单邮件

    @Autowired
    //JavaMailSender mailSender;
    //使用实现类可以自定义发送服务器地址,而不是默认使用文件配置中的发送服务器。
    JavaMailSenderImpl javaMailSender;

    @RequestMapping("sendemail")
    public void sendEmail(String toEamil,String subject, String content) {
        //解决附件文件名称过长乱码问题
        System.setProperty("mail.mime.splitlongparameters","false");
        //发送简单邮件
        sendSimpleMail(toEamil,subject,content);


    }

    public void sendSimpleMail(String to, String subject, String content) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("[email protected]");   //发送者,必须和application.yml中的username一致,否则会报错;
        message.setTo(to);              //接收者
        message.setSubject(subject);    //邮件主题
        message.setText(content);       //邮件内容
        try {
            mailSender.send(message);
            logger.info("简单邮件已经发送。");
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("发送简单邮件时发生异常!", e);
        }

    }

发送成功

2、发送html邮件

    public void sendHtmlMail(String to, String subject, String content) {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message, true);  //true表示需要创建一个multipart message
            helper.setFrom(fromEamil);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);

            mailSender.send(message);
            logger.info("html邮件发送成功");
        } catch (MessagingException e) {
            e.printStackTrace();
            logger.error("发送html邮件时发生异常!", e);
        }
    }

3、发送带附件的邮件

    /**
     * @param to
     * @param subject
     * @param content
     * @param filePath  文件路径:D:\\test\\pic.jpg 注意反斜杠
     */
    public void sendAttachmentsMail(String from, String pwd, String to, String subject, String content, String filePath){
        if(StringUtils.isNotBlank(from) && StringUtils.isNotBlank(pwd)) {
            //from和pwd为参数中自定义的发送者和密码
            mailSender.setUsername(from);
            mailSender.setPassword(pwd);
        }else{
            //FROM_USER和PASSWORD为application.yml中配置的发送者和密码。
            mailSender.setUsername(FROM_USER);
            mailSender.setPassword(PASSWORD;
        }
        MimeMessage message = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);

            if(StringUtils.isNotBlank(from) && StringUtils.isNotBlank(pwd)){
                helper.setFrom(from);
            }else{
                helper.setFrom(FROM_USER);//FROM_USER为application.yml中的username;
            }
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);

            FileSystemResource file = new FileSystemResource(new File(filePath));
            String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
            helper.addAttachment(fileName, file);

            mailSender.send(message);
            logger.info("带附件的邮件已经发送。");
        } catch (MessagingException e) {
            logger.error("发送带附件的邮件时发生异常!", e);
        }
    }

猜你喜欢

转载自blog.csdn.net/csdnwodeboke/article/details/80110612