Rumaion Tomal
Rumaion Tomal

Reputation: 49

Mail sending error with SimpleJavaMailer library

I am trying to send mail with SimpleJavaMailer library. But it is failing. The mail server is hosted by me. If I use NodeJs NodeMailer module their working. I have sent mail from mail box also it is working fine but when I am trying to send mail java spring boot it is failed.

The is here:

org.simplejavamail.mailer.internal.MailerException: Failed to send email [Subject: 'check mail'], reason: Third party error
    at org.simplejavamail.mailer.internal.SendMailClosure.handleException(SendMailClosure.java:85)
    at org.simplejavamail.mailer.internal.SendMailClosure.executeClosure(SendMailClosure.java:72)
    at org.simplejavamail.mailer.internal.AbstractProxyServerSyncingClosure.run(AbstractProxyServerSyncingClosure.java:59)
    at org.simplejavamail.mailer.internal.MailerImpl.sendMail(MailerImpl.java:364)
    at org.simplejavamail.mailer.internal.MailerImpl.sendMail(MailerImpl.java:349)
    at link.team71.emailserver.services.MailService.sendMail(MailService.java:35)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)
    at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:113)
    at org.springframework.util.concurrent.FutureUtils.lambda$toSupplier$0(FutureUtils.java:74)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1768)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: jakarta.mail.MessagingException: Could not connect to SMTP host: mail.team71.link, port: 465;
  nested exception is:
    javax.net.ssl.SSLHandshakeException: No subject alternative DNS name matching mail.team71.link found.
    at org.eclipse.angus.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2245)
    at org.eclipse.angus.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:729)
    at jakarta.mail.Service.connect(Service.java:367)
    at jakarta.mail.Service.connect(Service.java:225)
    at jakarta.mail.Service.connect(Service.java:174)
    at org.simplejavamail.mailer.internal.util.TransportConnectionHelper.connectTransport(TransportConnectionHelper.java:42)
    at org.simplejavamail.mailer.internal.util.TransportRunner.runOnSessionTransport(TransportRunner.java:80)
    at org.simplejavamail.mailer.internal.util.TransportRunner.sendMessage(TransportRunner.java:56)
    at org.simplejavamail.mailer.internal.SendMailClosure.executeClosure(SendMailClosure.java:69)
    ... 17 more
Caused by: javax.net.ssl.SSLHandshakeException: No subject alternative DNS name matching mail.team71.link found.
    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:130)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:378)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:316)
    at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:647)
    at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:467)
    at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:363)
    at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:393)
    at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:476)
    at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:447)
    at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:201)
    at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)
    at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1506)
    at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1421)
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455)
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426)
    at org.eclipse.angus.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:662)
    at org.eclipse.angus.mail.util.SocketFetcher.createSocket(SocketFetcher.java:409)
    at org.eclipse.angus.mail.util.SocketFetcher.getSocket(SocketFetcher.java:243)
    at org.eclipse.angus.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2193)
    ... 25 more
Caused by: java.security.cert.CertificateException: No subject alternative DNS name matching mail.team71.link found.
    at java.base/sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:207)
    at java.base/sun.security.util.HostnameChecker.match(HostnameChecker.java:103)
    at java.base/sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:461)
    at java.base/sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:417)
    at java.base/sun.security.ssl.AbstractTrustManagerWrapper.checkAdditionalTrust(SSLContextImpl.java:1463)
    at java.base/sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:1431)
    at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:631)
    ... 40 more

I have setup up the ssl on the mail server also. My code is:

 public CompletableFuture<Object> sendMail(String usermail, String subject, String content) {

        Email email = EmailBuilder.startingBlank()
                .from("Team 71", dotenv.get("EMAIL"))
                .to(usermail)
                .withSubject(subject)
                .withHTMLText(content)
                .buildEmail();

        Mailer mailer = MailerBuilder
                .withSMTPServer( dotenv.get("EMAIL_HOST"), 465, dotenv.get("EMAIL"), dotenv.get("EMAIL_PASSWORD"))
                .withTransportStrategy(TransportStrategy.SMTPS)
                .trustingAllHosts(true)// Use SMTPS for port 465
                .buildMailer();

        try {
            return CompletableFuture.completedFuture(mailer.sendMail(email));
        }catch (Exception e) {
            e.printStackTrace();
            return CompletableFuture.completedFuture(mailer.sendMail(email));
        }
    }

I have tried the spring mail library first but that also show the same problem

Upvotes: 0

Views: 124

Answers (0)

Related Questions