Reputation: 49
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