| package com.lyn.service;    import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.MailException; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service;    import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File;    /**  * @author:Lyn.R  * @date:2023-02-21 14:54:36  * @Description:  * @note:  **/ @Service public class SendEmailService {     @Autowired     private JavaMailSenderImpl mailSender;//使用Spring框架提供的实现类JavaMailSenderImpl来实现邮件发送。     @Value("${spring.mail.username}")//借助@Value注解读取全局变量中的spring.mail.username的值来作发件人     private String from;     /**      * 第一种方法:发送纯文本邮件      * @param to      收件人地址      * @param subject 邮件标题      * @param text    邮件内容      */    @Async     public void sendSimpleEmail(String to, String subject, String text) {         // 定制纯文本邮件信息SimpleMailMessage         SimpleMailMessage message = new SimpleMailMessage();         message.setFrom(from);//设置发件人         message.setTo(to);//设置收件人         message.setSubject(subject);//设置邮件标题         message.setText(text);//设置 正文件内容         try {             // 发送邮件             mailSender.send(message);             System.out.println("纯文本邮件发送成功");         } catch (MailException e) {             System.out.println("纯文本邮件发送失败 " + e.getMessage());             e.printStackTrace();         }     }     /**      * 第二种方法:发送复杂邮件(包括静态资源和附件)      * @param to           收件人地址      * @param subject      邮件标题      * @param text         邮件内容      * @param filePath     附件地址      * @param rscId        静态资源唯一标识      * @param rscPath      静态资源地址      */     //sendComplexEmail()方法需要接收的参数除了基本的发送信息外,还包括静态资源唯一标识、静态资源路径和附件路径     @Async     public void sendComplexEmail(String to,String subject,String text,String filePath,String rscId,String rscPath){         // 定制复杂邮件信息MimeMessage         MimeMessage message = mailSender.createMimeMessage();         try {             // 使用MimeMessageHelper帮助类对邮件信息封装处理 ,并设置multipart多部件使用为true             MimeMessageHelper helper = new MimeMessageHelper(message, true);             helper.setFrom(from);             helper.setTo(to);             helper.setSubject(subject);             helper.setText(text, true);             // 设置邮件静态资源             FileSystemResource res = new FileSystemResource(new File(rscPath));             helper.addInline(rscId, res);//设置邮件静态资源的方法             // 设置邮件附件             FileSystemResource file = new FileSystemResource(new File(filePath));             String fileName = filePath.substring(filePath.lastIndexOf(File.separator));             helper.addAttachment(fileName, file);//设置邮件附件的方法             // 发送邮件             mailSender.send(message);             System.out.println("复杂邮件发送成功");         } catch (MessagingException e) {             System.out.println("复杂邮件发送失败 "+e.getMessage());             e.printStackTrace();         } catch (Exception e) {             e.printStackTrace();         }     }        /**      * 第三钟方法:发送模板邮件      * @param to       收件人地址      * @param subject  邮件标题      * @param content  邮件内容      */     @Async     public void sendTemplateEmail(String to, String subject, String content) {         MimeMessage message = mailSender.createMimeMessage();         try {             // 使用MimeMessageHelper帮助类对邮件信息进行封装处理,并设置multipart多部件使用为true             MimeMessageHelper helper = new MimeMessageHelper(message, true);             helper.setFrom(from);             helper.setTo(to);             helper.setSubject(subject);             helper.setText(content, true);             // 发送邮件             mailSender.send(message);             System.out.println("模板邮件发送成功");         } catch (MessagingException e) {             System.out.println("模板邮件发送失败 "+e.getMessage());             e.printStackTrace();         }     }    } |