简体   繁体   中英

Spring Boot 3: Provider for jakarta.activation.spi.MailcapRegistryProvider cannot be found

I get an error upon sending email in a Spring Boot 3 application.

org.springframework.mail.MailSendException: Failed messages: java.lang.RuntimeException: Provider for jakarta.activation.spi.MailcapRegistryProvider cannot be found
        at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:491)
        at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:361)
        at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:356)

We are using JavaMailSender to send the email.

I wave the below dependency already.

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

Here's my code:

private final JavaMailSender mailSender;
    
    private void sendEmail () {
        MimeMessage message = mailSender.createMimeMessage();
    
        MimeMessageHelper messageHelper = new MimeMessageHelper(message, false, StandardCharsets.UTF_8.name());
        messageHelper.setTo("testemail@test.com");
        messageHelper.setSubject("test subject");
        messageHelper.setText("sample html email content", true);
        mailSender.send(message);
    }

you can use <dependency> <groupId>org.eclipse.angus</groupId> <artifactId>jakarta.mail</artifactId> </dependency> this implementation of mail API

@Service public class MailServiceImpl implements Mail Service {

private final JavaMailSender javaMailSender;

private static final Logger log = LoggerFactory.getLogger(MailServiceImpl.class);

@Autowired
public MailServiceImpl (JavaMailSender javaMailSender) {
    this.javaMailSender = javaMailSender;
}


@Override
public void send (String receiver, String sender, String message, String filenameAndLocation) {
    MimeMessagePreparator preparator = new MimeMessagePreparator() {
        @Override
        public void prepare (MimeMessage mimeMessage) throws Exception {
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
            messageHelper.setTo(receiver);
            messageHelper.setFrom(sender);
            messageHelper.setSubject("test subject");
            messageHelper.setText(message);
        }
    };
    this.javaMailSender.send(preparator);
}

}

Write your service class same like this hope it will help you

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM