SpringBoot中JavaMailSender注入失败
第一步 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
第二部 在配置中心添加相关配置(application.yml /application.properties /nacos)
spring:
mail:
host: smtp.qq.com
port: 465
username: your_username@qq.com
password: your_password
protocol: smtps
properties:
mail:
transport:
protocol: smtps
smtp:
ssl:
enable: true
第三部 在config配置@bean实例
@Configuration
public class MailConfig {
//bean命名
@Bean(name = "javaMailSender")
public JavaMailSenderImpl createMailSender() {
//创建一个 JavaMailSenderImpl 的实例,用于发送邮件。
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
//设置邮件服务器的主机地址为 smtp.qq.com。这里假设您使用的是腾讯 QQ 邮箱服务。
mailSender.setHost("smtp.qq.com");
//设置邮件服务器的端口号为 465。
mailSender.setPort(465);
///设置发件人的邮箱地址,即您 QQ 邮箱的地址。
mailSender.setUsername("your_username@qq.com");
//设置发件人的邮箱密码,即您 QQ 邮箱的登录密码。注意要妥善保护您的密码,不要将其泄露给他人。
mailSender.setPassword("your_password");
//创建一个名为 props 的 Properties 对象,用于保存邮件发送的相关配置信息。
Properties props = mailSender.getJavaMailProperties();
//将邮件的传输协议设置为 SMTPS(即带有 SSL 加密的 SMTP 协议)。
props.put("mail.transport.protocol", "smtps");
//表示启用 SSL 加密功能,保障邮件内容的安全。
props.put("mail.smtp.ssl.enable", "true");
//:将上面创建的 props 对象设置到 JavaMailSenderImpl 实例中,以便能够进行加密传输。
mailSender.setJavaMailProperties(props);
//返回 JavaMailSenderImpl 的实例,作为 Bean 对象。其他组件可以通过依赖注入来获取这个实例,进行邮件发送等操作。
return mailSender;
}
}
第四步 创建发送邮件方法 注入javaMailSender
@Service
public class MailServiceImpl implements MailService {
@Autowired
private JavaMailSender javaMailSender;
public void sendEmail(String email,String name){
//使用 JavaMailSender 创建一个 MIME 类型的信息对象实例。
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try {
//创建一个 MimeMessageHelper 对象实例,用于辅助构建 MIME 类型的信息。
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
//设置邮件接收人的邮箱地址。
helper.setTo(接收人);
//设置邮件发送人的地址,此处应替换成真实的发送人邮箱地址。
helper.setFrom("发送人");
设置邮件的主题。
helper.setSubject("注册通知");
获取当前的时间日期信息。
Date date = new Date();
//设置邮件的文本内容,其中使用了 HTML 标签来设置文本样式。具体来说,用了 <span> 标签来设置字体颜色,name 和 date 变量则是用于动态显示的内容。
helper.setText("恭喜<span style=\"color:red;\">"+name+"</span>在"+date+"成功注册了我们团队合力所开发的软件,这个软件可以为你的日常生活带来极大的方便,它将是你的生活发生天翻地覆的变化。敬请期待它对你的改变",true);
//发送附件
helper.addAttachment("文件名",new File("路径"));
//发送图片
helper.setText("内容<br><img src='图片名'>",true);
helper.addInline("图片名",new FileSystemResource(new File("路径")));
//超链接
helper.setText("内容<a href='http://www.baidu.com'>点我</a>",true);
//调用 JavaMailSender 的 send() 方法来完成邮件发送操作,其中 mimeMessage 参数即为构建好的 MIME 类型信息对象。
javaMailSender.send(mimeMessage);
} catch (Exception e) {
//:捕获可能发生的异常并抛出运行时异常,以便能够及时处理问题。
throw new RuntimeException(e);
}
}
}