Java 之 Spring Boot 发送邮箱(解决依赖找不到异常)

x33g5p2x  于2022-05-30 转载在 Java  
字(2.2k)|赞(0)|评价(0)|浏览(603)

Could not autowire. No beans of ‘JavaMailSender’ type found.解决
javax.mail.internet.MimeMessage 解决

1、引入依赖(注意版本号)pom.xml

<!--邮箱依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>javax.mail-api</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId >com.sun.mail</groupId >
            <artifactId >javax.mail</artifactId >
            <version>1.4.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>

2、设置配置文件

application.properties

spring.mail.host=smtp.qq.com
spring.mail.protocol=smtp
spring.mail.username=xxxx@qq.com
spring.mail.password=#这里是编码到请求邮箱的设置里面寻找
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

3、编写实体类

public class SendEmail implements Serializable {

    /**
     * 邮件接收方,可多人
     */
    private String[] tos;
    /**
     * 邮件主题
     */
    private String subject;
    /**
     * 邮件内容
     */
    private String content;

    public String[] getTos() {
        return tos;
    }

    public void setTos(String[] tos) {
        this.tos = tos;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public ToEmail() {
    }

    public SendEmail (String[] tos, String subject, String content) {
        this.tos = tos;
        this.subject = subject;
        this.content = content;
    }
}

4、注入并发送邮件

@Autowired
    private JavaMailSender mailSender;
    @Value("${spring.mail.username}")
    private String from;
public Boolean commonEmail(SendEmail sendEmail) {
        //创建简单邮件消息
        SimpleMailMessage message = new SimpleMailMessage();
        //谁发的
        message.setFrom(from);//from
        //谁要接收
        message.setTo(sendEmail.getTos());
        //邮件标题
        message.setSubject(sendEmail.getSubject());
        //邮件内容
        message.setText(sendEmail.getContent());
        try {
            mailSender.send(message);
            return true;
        } catch (MailException e) {
            e.printStackTrace();
            throw new ServiceException("邮箱格式错误");
        }
    }

相关文章