首页 > 其他分享 >spring boot 邮件发送

spring boot 邮件发送

时间:2024-05-21 08:57:28浏览次数:23  
标签:qq spring boot private mail class 邮件

  1. 之前的发邮件的话比较繁琐,spring bbot帮我们简化了开发,引入mail的启动类支持

    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    
  2. 既然spring boot中已经配置了,说明它里面肯定有一个关于mail的自动配置类:MailSenderAutoConfiguration

    @Configuration(
        proxyBeanMethods = false
    )
    @ConditionalOnClass({MimeMessage.class, MimeType.class, MailSender.class})
    @ConditionalOnMissingBean({MailSender.class})
    @Conditional({MailSenderAutoConfiguration.MailSenderCondition.class})
    @EnableConfigurationProperties({MailProperties.class})
    @Import({MailSenderJndiConfiguration.class, MailSenderPropertiesConfiguration.class})
    public class MailSenderAutoConfiguration {
        public MailSenderAutoConfiguration() {
        }
    
        static class MailSenderCondition extends AnyNestedCondition {
            MailSenderCondition() {
                super(ConfigurationPhase.PARSE_CONFIGURATION);
            }
    
            @ConditionalOnProperty(
                prefix = "spring.mail",
                name = {"jndi-name"}
            )
            static class JndiNameProperty {
                JndiNameProperty() {
                }
            }
    
            @ConditionalOnProperty(
                prefix = "spring.mail",
                name = {"host"}
            )
            static class HostProperty {
                HostProperty() {
                }
            }
        }
    }
    
  3. 同样可以查看配置文件,可以看我们能配置什么内容:MailProperties

    public class MailProperties {
        private static final Charset DEFAULT_CHARSET;
        private String host;
        private Integer port;
        private String username;
        private String password;
        private String protocol = "smtp";
        private Charset defaultEncoding;
        private final Map<String, String> properties;
        private String jndiName;
    
  4. 配置自己与mail相关的配置

    [email protected]
    spring.mail.password=qq邮箱授权码
    spring.mail.host=smtp.qq.com
    # qq需要配置ssl
    spring.mail.properties.mail.smtp.ssl.enable=true
    
  5. 进行代码测试

    
    @Autowired
    JavaMailSenderImpl mailSender;
    
    @Test
    public void emailTest(){
        //邮件设置1:一个简单的邮件
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("邮件主题");
        message.setText("邮件正文");
    
        message.setTo("[email protected]");
        message.setFrom("[email protected]");
        mailSender.send(message);
    }
    
  6. 若带有附件的复杂的邮件发送

  @Autowired
JavaMailSenderImpl mailSender;

@Test
public void contextLoads2() throws MessagingException {
    //邮件设置2:一个复杂的邮件
    MimeMessage mimeMessage = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);

    helper.setSubject("邮件的主题");
    helper.setText("<b style='color:red'>邮件的正文,写一些格式</b>",true);

    //发送附件
    helper.addAttachment("1.jpg",new File("F:/1.jpg"));

    helper.setTo("[email protected]");
    helper.setFrom("[email protected]");

    mailSender.send(mimeMessage);
}
```

标签:qq,spring,boot,private,mail,class,邮件
From: https://www.cnblogs.com/hytip/p/18203242

相关文章

  • SpringCache
    实现了基于注解的缓存功能导入依赖org.springframwork.bootspring-boot-starter-cachespring-boot-starter-data-redis2.7.3@EnableCaching一般放在启动类上,表示我们使用基于注解的缓存功能----开启缓存注解功能@Cacheable一般加在方法上,如果查询到缓存,就返回缓存数据......
  • Spring 对 Junit4,Junit5 的支持上的运用
    1.Spring对Junit4,Junit5的支持上的运用@目录1.Spring对Junit4,Junit5的支持上的运用每博一文案2.Spring对Junit4的支持3.Spring对Junit5的支持4.总结:5.最后:每博一文案关于理想主义,在知乎上看到一句话:“他们并不是不懂别人口中的现实,他们只是不信,事情只能是现在......
  • Spring Boot —— 集成文档工具
    Swagger->SpringDoc官网地址:https://springdoc.org/是基于OpenAPI3.0规范构建的集成SwaggerUI和ReDoc文档生成工具,可自动注入OpenAPI规范的JSON描述文件,支持OAUTH2、JWT等认证机制。推荐SpringBoot2.4及以上版本使用springdoc-openapi-ui集成Swagger3.x,SpringBoo......
  • 13年过去了,Spring官方竟然真的支持Bean的异步初始化了!
    你好呀,我是歪歪。两年前我曾经发布过这样的一篇文章《我是真没想到,这个面试题居然从11年前就开始讨论了,而官方今年才表态。》文章主要就是由这个面试题引起:Spring在启动期间会做类扫描,以单例模式放入ioc。但是spring只是一个个类进行处理,如果为了加速,我们取消spring自带......
  • idea中的springboot项目如何重命名而不报错
    在IntelliJIDEA中重命名SpringBoot项目需要一些步骤,以确保项目在重命名后不会报错。以下是详细的步骤指南:1.重命名项目文件夹关闭项目:在IntelliJIDEA中关闭当前项目。重命名文件夹:在文件系统中找到项目所在的文件夹,右键重命名文件夹。重新打开项目:在IntelliJID......
  • springboot的服务不需要连接数据库,如何保证正常启动
    记个小笔记@SpringBootApplication(exclude=DataSourceAutoConfiguration.class)是一个SpringBoot应用程序中用来排除特定自动配置类的注解,一般情况不需要使用数据库,取消这个自动配置即可;如果你这样做了,发现还是出现FailedtoconfigureaDataSource:'url'attributeisn......
  • spring boot如何自定义注解
    总共分三步:1、创建一个注解importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Target(ElementType.METHOD)//注解的目标为方法@Retention(Retention......
  • Spring Boot —— Filter 过滤器
    目标实现一个自定义过滤器,在所有请求进来时输出点儿信息实现过滤器实现一个自定义过滤器,在所有请求进行业务处理前,在控制台输出请求Id和请求Url@Configuration@EnableWebMvcpublicclassWebConfiguration{publicstaticclassMyFilterimplementsFilter{......
  • Spring Boot —— Cors 跨域
    原理实现WebMvcConfigurer接口代码publicclassCorsConfigimplementsWebMvcConfigurer{@OverridepublicvoidaddCorsMappings(CorsRegistryregistry){registry//允许跨域访问的路径.addMapping("/**")......
  • Spring Boot —— 集成 Druid
    pom<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId><version>${druid.version}</version></dependency>application-develop.yamlspring:datasour......