Nick Douma
      
Accepted
   

SMTP send error using self-host option

Using the self-host docker-compose file and the latest clearflask-server image (with digest ed1f3a04bec9), and an external SMTP server configured as such:
# Select generic SMTP ('smtp') or Amazon SES ('ses')
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.useService=smtp
# For SMTP
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpStrategy=SMTP
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpHost=outgoing.server.net
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpPort=587
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpUser=user@tld.com
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.smtpPassword=xxxx
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.emailDisplayName=Clearflask
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.fromEmailLocalPart=noreply
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.fromEmailDomainOverride=company.com
com.smotana.clearflask.core.push.provider.EmailServiceImpl$Config.bccEmails=nick.douma@company.com
I seem to get an error about building the email body, a class cast exception from multipart_mixed to a DataContentHandler:
clearflask-server_1   | 14:29:57.645 [pool-28-thread-1] ERROR o.s.i.util.concurrent.NamedRunnable - Failed to run sendMail process
clearflask-server_1   | org.simplejavamail.mailer.internal.MailerException: Failed to send email [ID: '<1617344838.3.1706797737574@21f994d5da02>'], reason: Unknown error
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.SendMailClosure.handleException(SendMailClosure.java:85)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.SendMailClosure.executeClosure(SendMailClosure.java:76)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.AbstractProxyServerSyncingClosure.run(AbstractProxyServerSyncingClosure.java:56)
clearflask-server_1   | 	at org.simplejavamail.internal.util.concurrent.NamedRunnable.run(NamedRunnable.java:40)
clearflask-server_1   | 	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736)
clearflask-server_1   | 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
clearflask-server_1   | 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
clearflask-server_1   | 	at java.base/java.lang.Thread.run(Thread.java:829)
clearflask-server_1   | Caused by: java.lang.ClassCastException: class com.sun.mail.handlers.multipart_mixed cannot be cast to class jakarta.activation.DataContentHandler (com.sun.mail.handlers.multipart_mixed and jakarta.activation.DataContentHandler are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @2e237e39)
clearflask-server_1   | 	at jakarta.activation.MailcapCommandMap.getDataContentHandler(MailcapCommandMap.java:620)
clearflask-server_1   | 	at jakarta.activation.MailcapCommandMap.createDataContentHandler(MailcapCommandMap.java:591)
clearflask-server_1   | 	at jakarta.activation.DataHandler.getDataContentHandler(DataHandler.java:591)
clearflask-server_1   | 	at jakarta.activation.DataHandler.writeTo(DataHandler.java:290)
clearflask-server_1   | 	at jakarta.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1683)
clearflask-server_1   | 	at jakarta.mail.internet.MimeMessage.writeTo(MimeMessage.java:1911)
clearflask-server_1   | 	at org.eclipse.angus.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1305)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.util.TransportRunner.lambda$sendMessage$0(TransportRunner.java:61)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.util.TransportRunner.runOnSessionTransport(TransportRunner.java:81)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.util.TransportRunner.sendMessage(TransportRunner.java:56)
clearflask-server_1   | 	at org.simplejavamail.mailer.internal.SendMailClosure.executeClosure(SendMailClosure.java:69)
clearflask-server_1   | 	... 6 common frames omitted
clearflask-server_1   | 	Suppressed: jakarta.mail.MessagingException: Exception reading response
clearflask-server_1   | 		at org.eclipse.angus.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2509)
clearflask-server_1   | 		at org.eclipse.angus.mail.smtp.SMTPTransport.close(SMTPTransport.java:1401)
clearflask-server_1   | 		at org.simplejavamail.mailer.internal.util.TransportRunner.runOnSessionTransport(TransportRunner.java:82)
clearflask-server_1   | 		... 8 common frames omitted
clearflask-server_1   | 	Caused by: java.net.SocketTimeoutException: Read timed out
clearflask-server_1   | 		at java.base/java.net.SocketInputStream.socketRead0(Native Method)
clearflask-server_1   | 		at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
clearflask-server_1   | 		at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
clearflask-server_1   | 		at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
clearflask-server_1   | 		at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478)
clearflask-server_1   | 		at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
clearflask-server_1   | 		at java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70)
clearflask-server_1   | 		at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1454)
clearflask-server_1   | 		at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1065)
clearflask-server_1   | 		at org.eclipse.angus.mail.util.TraceInputStream.read(TraceInputStream.java:107)
clearflask-server_1   | 		at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:252)
clearflask-server_1   | 		at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:271)
clearflask-server_1   | 		at org.eclipse.angus.mail.util.LineInputStream.readLine(LineInputStream.java:104)
clearflask-server_1   | 		at org.eclipse.angus.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2489)
clearflask-server_1   | 		... 10 common frames omitted
I've tried all non-TLS and TLS mechanisms supported. When dumping the packets, it seems that the connection goes correctly until the STARTTLS command, and after that nothing is else is sent until the remote server closes the connection. Seems like something goes wrong with building the sender/recipient, or the email body.
Am I configuring this wrong, or is this a bug?