Reputation: 19
I am trying to send email from my Spring Boot app and it works perfectly, but just on localhost. When I try it put on my VPS, I get this error. I see that my VPS connects and authenticates to the SMTP server, but in the end for some reason sending fails. I have no firewall on my VPS. Why is this happening?
DEBUG: setDebug: Jakarta Mail version 2.0.1
DEBUG: getProvider() returning jakarta.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: need username and password for authentication
DEBUG SMTP: protocolConnect returning false, host=wes1-smtp.wedos.net, [email protected], password=<null>
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "wes1-smtp.wedos.net", port 587, isSSL false
220 wes1-so2.wedos.net ESMTP Postfix - S.T.A.N.D.A. postak OUT
DEBUG SMTP: connected to host "wes1-smtp.wedos.net", port: 587
EHLO 5575e5731be3
250-wes1-so2.wedos.net
250-PIPELINING
250-SIZE 104857600
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "104857600"
DEBUG SMTP: Found extension "VRFY", arg ""
DEBUG SMTP: Found extension "ETRN", arg ""
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "DSN", arg ""
STARTTLS
220 2.0.0 Ready to start TLS
EHLO 5575e5731be3
250-wes1-so2.wedos.net
250-PIPELINING
250-SIZE 104857600
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "104857600"
DEBUG SMTP: Found extension "VRFY", arg ""
DEBUG SMTP: Found extension "ETRN", arg ""
DEBUG SMTP: Found extension "AUTH", arg "PLAIN LOGIN"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "DSN", arg ""
DEBUG SMTP: protocolConnect login, host=wes1-smtp.wedos.net, [email protected], password=<non-null>
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2
DEBUG SMTP: Using mechanism LOGIN
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN succeeded
DEBUG SMTP: use8bit false
MAIL FROM:<[email protected]>
250 2.1.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP: [email protected]
DATA
354 End data with <CR><LF>.<CR><LF>
Date: Tue, 30 May 2023 18:08:21 +0000 (UTC)
From: [email protected]
To: [email protected]
Message-ID: <1085117917.0.1685470101618@5575e5731be3>
Subject: Email Subject
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
QUIT
DEBUG SMTP: exception reading response, THROW:
java.net.SocketTimeoutException: Read timed out
at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:283)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:309)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966)
at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478)
at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
at java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70)
at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1455)
at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1059)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:102)
at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:244)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:263)
at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:100)
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2456)
at com.sun.mail.smtp.SMTPTransport.close(SMTPTransport.java:1396)
at org.simplejavamail.mailer.internal.util.TransportRunner.runOnSessionTransport(TransportRunner.java:74)
at org.simplejavamail.mailer.internal.util.TransportRunner.sendMessage(TransportRunner.java:51)
at org.simplejavamail.mailer.internal.SendMailClosure.executeClosure(SendMailClosure.java:69)
at org.simplejavamail.mailer.internal.AbstractProxyServerSyncingClosure.run(AbstractProxyServerSyncingClosure.java:56)
at org.simplejavamail.mailer.internal.MailerImpl.sendMail(MailerImpl.java:363)
at org.simplejavamail.mailer.internal.MailerImpl.sendMail(MailerImpl.java:348)
at cz.digikyblik.main.services.EmailService.simpleMail(EmailService.java:63)
at cz.digikyblik.main.services.BucketService.lambda$createBucket$0(BucketService.java:79)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
org.simplejavamail.mailer.internal.MailerException: Failed to send email [ID: '<1085117917.0.1685470101618@5575e5731be3>'], reason: Unknown error
at org.simplejavamail.mailer.internal.SendMailClosure.handleException(SendMailClosure.java:85)
at org.simplejavamail.mailer.internal.SendMailClosure.executeClosure(SendMailClosure.java:76)
at org.simplejavamail.mailer.internal.AbstractProxyServerSyncingClosure.run(AbstractProxyServerSyncingClosure.java:56)
at org.simplejavamail.mailer.internal.MailerImpl.sendMail(MailerImpl.java:363)
at org.simplejavamail.mailer.internal.MailerImpl.sendMail(MailerImpl.java:348)
at cz.digikyblik.main.services.EmailService.simpleMail(EmailService.java:63)
at cz.digikyblik.main.services.BucketService.lambda$createBucket$0(BucketService.java:79)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: java.lang.RuntimeException: Provider for jakarta.activation.spi.MailcapRegistryProvider cannot be found
at jakarta.activation.FactoryFinder.find(FactoryFinder.java:90)
at jakarta.activation.MailcapCommandMap.getImplementation(MailcapCommandMap.java:696)
at jakarta.activation.MailcapCommandMap.loadFile(MailcapCommandMap.java:284)
at jakarta.activation.MailcapCommandMap.<init>(MailcapCommandMap.java:154)
at jakarta.activation.CommandMap.getDefaultCommandMap(CommandMap.java:60)
at jakarta.activation.DataHandler.getCommandMap(DataHandler.java:128)
at jakarta.activation.DataHandler.getDataContentHandler(DataHandler.java:590)
at jakarta.activation.DataHandler.writeTo(DataHandler.java:290)
at jakarta.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1670)
at jakarta.mail.internet.MimeMessage.writeTo(MimeMessage.java:1888)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1300)
at org.simplejavamail.mailer.internal.util.TransportRunner.lambda$sendMessage$0(TransportRunner.java:53)
at org.simplejavamail.mailer.internal.util.TransportRunner.runOnSessionTransport(TransportRunner.java:73)
at org.simplejavamail.mailer.internal.util.TransportRunner.sendMessage(TransportRunner.java:51)
at org.simplejavamail.mailer.internal.SendMailClosure.executeClosure(SendMailClosure.java:69)
... 12 more
Suppressed: jakarta.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketTimeoutException: Read timed out
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2476)
at com.sun.mail.smtp.SMTPTransport.close(SMTPTransport.java:1396)
at org.simplejavamail.mailer.internal.util.TransportRunner.runOnSessionTransport(TransportRunner.java:74)
... 14 more
Caused by: java.net.SocketTimeoutException: Read timed out
at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:283)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:309)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966)
at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478)
at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
at java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70)
at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1455)
at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1059)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:102)
at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:244)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:263)
at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:100)
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2456)
... 16 more
Here is code, but like I said, it works when I run it on localhost and it sends it immediately.
public void simpleMail() {
Email email = EmailBuilder.startingBlank()
.from("[email protected]")
.to("[email protected]")
.withSubject("Email Subject")
.withPlainText("Email Body")
.buildEmail();
Mailer mailer = MailerBuilder
.withSMTPServer("wes1-smtp.wedos.net", 587, "mail", "pass")
.withTransportStrategy(TransportStrategy.SMTP_TLS)
.buildMailer();
mailer.getSession().setDebug(true);
try {
mailer.sendMail(email);
} catch (MailException e) {
e.printStackTrace();
}
}
Upvotes: 0
Views: 984
Reputation: 148
Some VPS providers require you to configure the security network for outbound network communication. In some cases, you may need to configure outbound rules to allow communication from your Spring Boot application to the SMTP server and allow sending of emails.
Upvotes: 1