SpringBoot 发送邮件

一、创建一个普通的SpringBoot工程(使用maven构建)

二、在pom.xml下添加依赖

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

三、在resources目录下的application.properties添加下述配置

spring.mail.host = smtp.163.com
spring.mail.username = xxxxxxx@163.com
spring.mail.password = 
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties..mail.smtp.timeout = 25000

四、创建一个EmailConfig类,从application.properties中获取发件人邮箱(后续需要用到)

@Component
public class EmailConfig {

    @Value("${spring.mail.username}")
    private String emailFrom;

    public String getEmailFrom() {
        return emailFrom;
    }

    public void setEmailFrom(String emailFrom) {
        this.emailFrom = emailFrom;
    }
}

五、创建一个发送邮件接口EmailService

public interface EmailService {

    /**
     * 发送简单邮件
     * @param sendTo 收件人
     * @param title 邮件标题
     * @param content 邮件内容
     */
    void sendSimpleMail(String sendTo, String title, String content);

    /**
     * 发送简单邮件(带附件)
     * @param sendTo 收件人
     * @param titel 邮件标题
     * @param content 邮件内容
     * @param attachments <文件名,附件> 附件列表
     */
    void sendAttachmentsMail(String sendTo, String titel, String content, List<Pair<String, File>> attachments);

六、实现EmailService接口

@Service
public class EmailServiceImpl implements EmailService{

    @Autowired
    private EmailConfig emailConfig;
    @Autowired
    private JavaMailSender mailSender;

    /**
     * 发送简单邮件
     * @param sendTo 收件人
     * @param title 邮件标题
     * @param content 邮件内容
     */
    @Override
    public void sendSimpleMail(String sendTo, String title, String content) {
        SimpleMailMessage message = new SimpleMailMessage();

        message.setFrom(emailConfig.getEmailFrom());
        message.setTo(sendTo);
        message.setSubject(title);
        message.setText(content);

        mailSender.send(message);
        System.out.println("邮件已发送");
    }

    /**
     * 发送简单邮件(带附件)
     * @param sendTo 收件人
     * @param titel 邮件标题
     * @param content 邮件内容
     * @param attachments <文件名,附件> 附件列表
     */
    @Override
    public void sendAttachmentsMail(String sendTo, String titel, String content, List<Pair<String, File>> attachments) {
        MimeMessage mimeMessage = mailSender.createMimeMessage();

        try {
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setFrom(emailConfig.getEmailFrom());
            helper.setTo(sendTo);
            helper.setSubject(titel);
            helper.setText(content);

            for (Pair<String, File> pair : attachments) {
                helper.addAttachment(pair.getKey(),new FileSystemResource(pair.getValue()));
            }
        } catch (MessagingException e) {
            e.printStackTrace();
        }

        mailSender.send(mimeMessage);
    }

七、创建一个Controller类用于测试

@RestController
public class EmailController {

    @Autowired
    private EmailServiceImpl emailService;

    //发送简单邮件
    @GetMapping("/email")
    public String simpleEmail(){
        String sendTo = "xxxx@qq.com";
        String title = "测试";
        String content = "测试成功";
        emailService.sendSimpleMail(sendTo,title,content);
        return "邮件已发送,请查收";
    }

    //发送简单邮件(带附件)
    @GetMapping("/attemail")
    public String attachmentsMail(){
        String sendTo = "xxx@qq.com";
        String title = "测试";
        String content = "测试成功";
        List<Pair<String,File>> attachments = new ArrayList<>();
        attachments.add(new Pair<String, File>("1.png",new File("D:\\devsoft\\截图\\1.png")));

        emailService.sendAttachmentsMail(sendTo,title,content,attachments);
        return "邮件已发送,请查收";
    }

八、访问localhost:8080/email 或 localhost:8080/attemail(注意更改File路径),结果查看邮箱即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中发送邮件需要使用JavaMailSender接口来实现。以下是一个简单的示例代码: 首先,确保在你的项目中添加了相关依赖。在pom.xml文件中添加以下代码: ```xml <dependencies> <!-- Spring Boot Starter Mail --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> </dependencies> ``` 然后,在你的应用程序中创建一个类来发送邮件。例如,你可以创建一个名为EmailSender的类: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Component; @Component public class EmailSender { @Autowired private JavaMailSender javaMailSender; public void sendEmail(String to, String subject, String text) { SimpleMailMessage message = new SimpleMailMessage(); message.setTo(to); message.setSubject(subject); message.setText(text); javaMailSender.send(message); } } ``` 在上述示例中,我们使用了@Autowired注解来自动注入JavaMailSender对象,该对象是由Spring Boot自动配置提供的。 现在,你可以在你的应用程序的任何地方使用EmailSender类来发送邮件。例如,你可以在控制器中使用它: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class EmailController { @Autowired private EmailSender emailSender; @PostMapping("/sendEmail") public String sendEmail(@RequestBody EmailRequest emailRequest) { emailSender.sendEmail(emailRequest.getTo(), emailRequest.getSubject(), emailRequest.getText()); return "Email sent successfully!"; } } ``` 上述示例中,我们创建了一个名为EmailController的REST控制器,它接收一个包含收件人、主题和内容的EmailRequest对象,并使用EmailSender发送邮件。 请注意,你需要适当配置你的邮件服务器信息。在Spring Boot的application.properties(或application.yml)文件中添加以下配置: ```yaml spring.mail.host=your-mail-server spring.mail.port=your-mail-server-port spring.mail.username=your-username spring.mail.password=your-password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true ``` 以上是一个简单的示例,你可以根据你的实际需求进行修改和扩展。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值