springboot发送邮件

本文介绍了如何在SpringBoot应用中集成和配置邮件服务,包括发送简单邮件、HTML格式邮件和带附件的邮件。详细讲解了配置SMTP服务器、设置授权码以及使用JavaMailSender接口发送各种类型邮件的步骤和代码示例。
摘要由CSDN通过智能技术生成

1. 导入依赖

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

2. 配置

配置邮件也是很简单的,可以yml文件中配置,要注意的是password填的不是邮箱密码,而是授权码。
qq邮箱获取授权码的方法,可以进入QQ邮箱首页->设置->帐户,开启SMTP服务,并生成授权码

spring:
  mail:
    # 配置 SMTP 服务器地址
    host: smtp.qq.com
    # 发送者邮箱
    username: 810725633@qq.com
    # 邮箱授权码
    password:
    # 端口号465或587
    port: 587
    # 默认的邮件编码为UTF-8
    default-encoding: UTF-8
    # 配置SSL 加密工厂
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true

3. 使用

Springboot融合了mail功能,导入依赖后就可以直接使用。
发送简单邮件(不带附件,不带格式):

@RunWith(SpringRunner.class)
@SpringBootTest(classes = BrokerApplication.class)
@TestPropertySource(properties = {"classpath:application.yml"})
public class FetchMailTest {

    @Resource
    JavaMailSender javaMailSender;
    @Test
    public void contextLoads() throws Exception {
        SimpleMailMessage message=new SimpleMailMessage();
        Map<String, String> testMap = new HashMap<>();
        testMap.put("poloniex", "12");
        testMap.put("binance", "11");
        message.setText(JacksonUtils.serialize(testMap));
        message.setSubject("Exchange Score");
        message.setTo("bert.li@poloniex.com");
        // 一定要加这一行 否则报 501 错误
        message.setFrom(String.valueOf(new InternetAddress("810725633@qq.com")));
//        message.setCc("抄送人");
//        message.setBcc("密送人");
        javaMailSender.send(message);
    }

}

发送带Html格式的附件:

@SpringBootTest
class SpringbootApplicationTests {

    @Autowired
    JavaMailSender javaMailSender;
    @Test
    void contextLoads() throws Exception {
        MimeMessage mailMessage=javaMailSender.createMimeMessage();
        //需要借助Helper类
        MimeMessageHelper helper=new MimeMessageHelper(mailMessage);
        String context="<b>尊敬的用户:</b><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您好,管理员已为你申请了新的账号,"+
                "请您尽快通过<a href=\"http://www.liwz.top/\">链接</a>登录系统。"
                +"<br>修改密码并完善你的个人信息。<br><br><br><b>员工管理系统<br>Li,Wan Zhi</b>";
        try {
            helper.setFrom("发送人");
            helper.setTo("收件人");
            helper.setBcc("密送人");
            helper.setSubject("主题");
            helper.setSentDate(new Date());//发送时间
            helper.setText(context,true);
            //第一个参数要发送的内容,第二个参数是不是Html格式。
			

            javaMailSender.send(mailMessage);

        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

}

发送带附件的邮件:

@SpringBootTest
class SpringbootApplicationTests {
    @Autowired
    JavaMailSender javaMailSender;
    @Test
    void contextLoads() throws Exception {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        // true表示构建一个可以带附件的邮件对象
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);

        helper.setSubject("这是一封测试邮件");
        helper.setFrom("97******9@qq.com");
        helper.setTo("10*****16@qq.com");
        //helper.setCc("37xxxxx37@qq.com");
        //helper.setBcc("14xxxxx098@qq.com");
        helper.setSentDate(new Date());
        helper.setText("这是测试邮件的正文");
        // 第一个参数是自定义的名称,后缀需要加上,第二个参数是文件的位置
        helper.addAttachment("资料.xlsx",new File("/Users/gamedev/Desktop/测试数据 2.xlsx"));
        javaMailSender.send(mimeMessage);
    }

}

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、付费专栏及课程。

余额充值