On Tuesday, January 28, 2020 11:07:27 AM CET Matthias Leinweber wrote:
> After some sleep i found the solution ..
> 
> inside the javax-mail.jar is the mailcap file which contains the mappings
> from mime-types to java classes.
> So i just changed the context classloader to the correct class, directly
> before the Transport.send
> Thread.currentThread().setContextClassLoader(com.sun.mail.handlers.text_html
> .class.getClassLoader());

We have a module⁰ for sending mails via SMTPS at Sling.
I'm pretty sure you can see the issues described in KARAF-5571 in our 
integration test when the class loader swapping gets removed from 
SimpleMailService.

Regards,
O.

[0] https://github.com/apache/sling-org-apache-sling-commons-messaging-mail

> best regards,
> Matthias
> 
> 
> Am Di., 28. Jan. 2020 um 06:15 Uhr schrieb Jean-Baptiste Onofré <
> 
> [email protected]>:
> > Hi Matthias,
> > 
> > Yeah, it's what I thought. Let me take a look.
> > 
> > Regards
> > JB
> > 
> > On 27/01/2020 22:52, Matthias Leinweber wrote:
> > > Hi JB,
> > > 
> > > impressive memory.. found the
> > > ticket: https://issues.apache.org/jira/browse/KARAF-5571 unresolved, but
> > > I encountered the same exception a few hours ago.
> > > I think that the "no object dch for mime type" is a result of the class
> > > loader separation...  but i have no idea from which class I should
> > > replace my context class loader before sending the mail.
> > > 
> > > Am Mo., 27. Jan. 2020 um 21:22 Uhr schrieb Jean-Baptiste Onofré
> > > 
> > > <[email protected] <mailto:[email protected]>>:
> > >     Hi Matthias,
> > >     
> > >     AFAIR, we have a Jira about that. Are you sure about the activation
> > >     version you are using ?
> > >     
> > >     Regards
> > >     JB
> > >     
> > >     On 27/01/2020 21:16, Matthias Leinweber wrote:
> > >     > Hello Karaf Users,
> > >     > 
> > >     > Hello Karaf-Team,
> > >     > 
> > >     > I try to create a Component which is able to send mails. I looked
> > 
> > into
> > 
> > >     > the decanter email component and basically used it  and modified
> > >     
> > >     it for
> > >     
> > >     > multi part.
> > >     > The strange this is, that somehow the client can't read a
> > 
> > response. I
> > 
> > >     > have no idea what i could do... i read something about class
> > >     > loader
> > >     > problems with this error. But i cant get it working.
> > >     > Using karaf 4.2.8 with java9
> > >     > I added com.sun.activation/javax.activation/1.2.0 for
> > >     > javax.activation.DataHandler (missing/hidden/removed in jdk9?)
> > >     > 
> > >     > Here is the debug log from the Session:
> > >     > 
> > >     > DEBUG: setDebug: JavaMail version 1.6.0
> > >     > DEBUG: getProvider() returning
> >  
> >  javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle
> >  ,1.6.0]>  
> > >     > DEBUG SMTP: useEhlo true, useAuth false
> > >     > DEBUG SMTP: trying to connect to host "172.18.0.1", port 25000,
> > >     
> > >     isSSL false
> > >     
> > >     > 220 this-is-correct.xx ESMTP Postfix
> > >     > DEBUG SMTP: connected to host "172.18.0.1", port: 25000
> > >     > 
> > >     > EHLO c7182e3f0afe
> > >     > 250-this-is-correct.xx
> > >     > 250-PIPELINING
> > >     > 250-SIZE 30720000
> > >     > 250-VRFY
> > >     > 250-ETRN
> > >     > 250-ENHANCEDSTATUSCODES
> > >     > 250-8BITMIME
> > >     > 250 DSN
> > >     > DEBUG SMTP: Found extension "PIPELINING", arg ""
> > >     > DEBUG SMTP: Found extension "SIZE", arg "30720000"
> > >     > DEBUG SMTP: Found extension "VRFY", arg ""
> > >     > DEBUG SMTP: Found extension "ETRN", arg ""
> > >     > DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
> > >     > DEBUG SMTP: Found extension "8BITMIME", arg ""
> > >     > DEBUG SMTP: Found extension "DSN", arg ""
> > >     > 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>
> > >     > DEBUG SMTP: IOException while sending, closing, THROW:
> > >     > javax.activation.UnsupportedDataTypeException: no object DCH for
> > 
> > MIME
> > 
> > >     > type multipart/mixed;
> > >     > boundary="----=_Part_0_973667738.1580155842011"
> > >     > ....
> > >     > 
> > >     > And here is basically my code:
> > >     > properties = new Properties();
> > >     > properties.put("mail.smtp.host", cc.getString("hostname"));
> > >     > properties.put("mail.smtp.port", cc.getString("port"));
> > >     > properties.put("mail.smtp.connectiontimeout", "10000");
> > >     > properties.put("mail.smtp.timeout", "10000");
> > >     > [....]
> > >     > 
> > >     > Session session = Session.getInstance(properties);
> > >     > session.setDebug(true);
> > >     > MimeMessage message = new MimeMessage(session);
> > >     > Multipart multipart = new MimeMultipart();
> > >     > message.setFrom(new InternetAddress(from));
> > >     > message.setSubject(subject);
> > >     > for (String to : tos) {
> > >     > 
> > >     >   message.addRecipients(Message.RecipientType.TO
> > >     
> > >     <http://Message.RecipientType.TO>
> > >     
> > >     > <http://Message.RecipientType.TO>, to);
> > >     > }
> > >     > 
> > >     > BodyPart messageBodyPart = new MimeBodyPart();
> > >     > messageBodyPart.setText("This is message body");
> > >     > multipart.addBodyPart(messageBodyPart);
> > >     > 
> > >     > byte[] bytes = bos.toByteArray(); //very small
> > >     > MimeBodyPart mimeBodyPart = new MimeBodyPart();
> > >     > ByteArrayDataSource ds = new ByteArrayDataSource(bytes,
> > >     > "application/octet-stream");
> > >     > mimeBodyPart.setDataHandler(new DataHandler(ds));
> > >     > mimeBodyPart.setFileName(UUID.randomUUID().toString());
> > >     > multipart.addBodyPart(mimeBodyPart);
> > >     > 
> > >     > message.setContent(multipart);
> > >     > Transport.send(message);
> > >     > 
> > >     > best regards,
> > >     > it is not
> > >     
> > >     --
> > >     Jean-Baptiste Onofré
> > >     [email protected] <mailto:[email protected]>
> > >     http://blog.nanthrax.net
> > >     Talend - http://www.talend.com
> > > 
> > > --
> > > 
> > > Matthias Leinweber - Data Tactics
> > > 
> > > Telefon: +49 176 810 24580
> > > E-Mail: [email protected] <mailto:[email protected]>
> > > Internet: http://www.datatactics.de
> > > Postanschrift: Grabenheckerstraße 9, 35232 Dautphetal
> > 
> > --
> > Jean-Baptiste Onofré
> > [email protected]
> > http://blog.nanthrax.net
> > Talend - http://www.talend.com



Reply via email to