2005/11/21, Marc Salvetti <[EMAIL PROTECTED]>:
That's why i'm trying to do for a while now and i came to the following problems :

- if i use the action and set the src attribute to a cocoon pipeline producing html, the Content-disposition = attachment header is added, which i don't want (i want the html inline), but the pdf file is attached correctly to the mail
- I can manage to send the html inline using the javaMail api directly from flowscript, but authentication and construction of the message is more complex than using the action, and i get the following error when sending the message :

ERROR 2005-11-21 19:57:05,710 [flow] Thread-108 - javax.mail.MessagingException: IOException while sending message;
  nested exception is:
    javax.activation.UnsupportedDataTypeException: no object DCH for MIME type application/pdf


I looked at the code of the MessageSender class, and i saw that it get the mime type by using the sourceResolver component.
Since the mime type returned by the sourceResolver is also application/pdf i know it's not something to do with versions of the activation framework or some


Sorry, i sent the message by mistake - damn keyboards shortcuts ! :)

Since the mime type returned by the sourceResolver is also application/pdf i think it's not something to do with versions of the activation framework or something like that, but more with the way i use the api.

I'd rather use the action, but it doesn't support adding custom headers, and it set the body of the message as an attachment.

here is the flowscript i use :

   var mailprops = new java.util.Properties();
   mailprops.put("mail.smtp.host", cocoon.parameters['smtp-host']);
   mailprops.put("mail.smtp.auth", "true");
   mailprops.put("mail.smtp.user", cocoon.parameters['smtp-user']);
   mailprops.put("mail.smtp.password", cocoon.parameters['smtp-password']);
   var session = javax.mail.Session.getDefaultInstance(mailprops, null);
   session.setDebug(true);
   // create a message
   var msg = new javax.mail.internet.MimeMessage(session);
   msg.setRecipients(javax.mail.Message.RecipientType.TO, to);
   if(!bcc.equals("")){
       msg.setRecipients(javax.mail.Message.RecipientType.BCC, bcc);
    }
    // Optional : You can also set your custom headers in the Email if you Want
    // Setting the Subject and Content Type
   msg.setSubject(subject);
   msg.setSentDate(new java.util.Date());
   var result, message;
   try
   {
        var addressFrom = new javax.mail.internet.InternetAddress(cocoon.parameters['from']);
        msg.setFrom(addressFrom);
       
        // create and fill the first message part
        var mbp1 = new javax.mail.internet.MimeBodyPart();
        mbp1.setContent(body, "text/html");
       
        // create the Multipart and its parts to it
        var mp = new javax.mail.internet.MimeMultipart();
        mp.addBodyPart(mbp1);

        if(!attachments.equals("")){
            // create and fill the second message part
            var mbp2 = new javax.mail.internet.MimeBodyPart();
            mbp2.setDisposition("attachment")
            var mimeType = getMimeType(attachments);
            // Use setText(text, charset), to show it off !
            var stream = new java.io.ByteArrayOutputStream();
            cocoon.processPipelineTo(attachments, {}, stream );
           
            mbp2.setContent(stream, mimeType);
            mp.addBodyPart(mbp2);
        }
       
        // add the Multipart to the message
        msg.setContent(mp);
       
        // send the message
        //javax.mail.Transport.send(msg);
        var tr = session.getTransport("smtp");
        tr.connect(cocoon.parameters['smtp-host'], cocoon.parameters['smtp-user'], cocoon.parameters['smtp-password']);
        msg.saveChanges();
        tr.sendMessage(msg, msg.getAllRecipients());
        tr.close();
        result = "success";
   }
   catch(e)
   {
           cocoon.log.error("e="+ e);
           result = "failure";
           message = e;
   }


Any help would be greatly appreciated !

Marc