You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2005/10/12 16:35:46 UTC

svn commit: r314933 - /cocoon/blocks/mail/trunk/java/org/apache/cocoon/mail/transformation/SendMailTransformer.java

Author: reinhard
Date: Wed Oct 12 07:35:43 2005
New Revision: 314933

URL: http://svn.apache.org/viewcvs?rev=314933&view=rev
Log:
- make a difference between plain text mails and mails that 
  have a multi-part body  --> if the mail-body has set the
  mime-type "text/plain", the message body isn't send as
  body part but as simple content (avoids getting a plain
  text-message without attachment being marked as mail with
  attachement)

Modified:
    cocoon/blocks/mail/trunk/java/org/apache/cocoon/mail/transformation/SendMailTransformer.java

Modified: cocoon/blocks/mail/trunk/java/org/apache/cocoon/mail/transformation/SendMailTransformer.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/mail/trunk/java/org/apache/cocoon/mail/transformation/SendMailTransformer.java?rev=314933&r1=314932&r2=314933&view=diff
==============================================================================
--- cocoon/blocks/mail/trunk/java/org/apache/cocoon/mail/transformation/SendMailTransformer.java (original)
+++ cocoon/blocks/mail/trunk/java/org/apache/cocoon/mail/transformation/SendMailTransformer.java Wed Oct 12 07:35:43 2005
@@ -570,48 +570,60 @@
 
         // decide, if to take content from source or plain text
         // from variable to build mailbody
+        String messageString;
         if (this.bodyURI != null) {
             Source      inSrc   = resolver.resolveURI(this.bodyURI);
             this.usedSources.add(inSrc);
             InputStream inStr   = inSrc.getInputStream();
             byte[]      byteArr = new byte[inStr.available()];
             inStr.read(byteArr);
-
-            String mailBody = new String(byteArr);
-            messageBodyPart.setContent(mailBody, this.bodyMimeType);
+            
+            messageString = new String(byteArr);
+            
+            // String mailBody = new String(byteArr);
+            // this.setMessageBody(messageBodyPart, mailBody, this.bodyMimeType);
         } else {
-            messageBodyPart.setContent(this.body, this.bodyMimeType);
+            messageString = this.body;
+            // this.setMessageBody(messageBodyPart, this.body, this.bodyMimeType);            
         }
 
-        Multipart multipart = new MimeMultipart();
-        multipart.addBodyPart(messageBodyPart);
-
-        // process attachments
-        Iterator iterAtt = this.attachments.iterator();
-
-        while (iterAtt.hasNext()) {
-            AttachmentDescriptor aD = (AttachmentDescriptor) iterAtt.next();
-            messageBodyPart = new MimeBodyPart();
-
-            if (!aD.isTextContent()) {
-                Source inputSource = null;
-                DataSource dataSource = null;
-
-                inputSource = resolver.resolveURI(aD.isURLSource() ? aD.strAttrSrc : aD.strAttrFile);
-                this.usedSources.add(inputSource);
-
-                dataSource = new SourceDataSource(inputSource, aD.strAttrMimeType, aD.strAttrName);
+        // make it a simple plain text message in the case of a set plain/text 
+        // mime-type and any attachements
+        if("text/plain".equals(this.bodyMimeType) && this.attachments.size() == 0) {     
+            sm.setText(messageString);
+        }
+        // add message as message body part
+        else {
+            messageBodyPart.setContent(messageString, this.bodyMimeType);
+            Multipart multipart = new MimeMultipart();
+            multipart.addBodyPart(messageBodyPart);
 
-                messageBodyPart.setDataHandler(new DataHandler(dataSource));
-            } else {
-                messageBodyPart.setContent(aD.strContent, aD.strAttrMimeType);
+            // process attachments
+            Iterator iterAtt = this.attachments.iterator();
+    
+            while (iterAtt.hasNext()) {
+                AttachmentDescriptor aD = (AttachmentDescriptor) iterAtt.next();
+                messageBodyPart = new MimeBodyPart();
+    
+                if (!aD.isTextContent()) {
+                    Source inputSource = null;
+                    DataSource dataSource = null;
+    
+                    inputSource = resolver.resolveURI(aD.isURLSource() ? aD.strAttrSrc : aD.strAttrFile);
+                    this.usedSources.add(inputSource);
+    
+                    dataSource = new SourceDataSource(inputSource, aD.strAttrMimeType, aD.strAttrName);
+    
+                    messageBodyPart.setDataHandler(new DataHandler(dataSource));
+                } else {
+                    messageBodyPart.setContent(aD.strContent, aD.strAttrMimeType);
+                }
+    
+                messageBodyPart.setFileName(aD.strAttrName);
+                multipart.addBodyPart(messageBodyPart);
             }
-
-            messageBodyPart.setFileName(aD.strAttrName);
-            multipart.addBodyPart(messageBodyPart);
+            sm.setContent(multipart);
         }
-
-        sm.setContent(multipart);
 
         //sm.setReturnOption(SMTPMessage.RETURN_FULL);
         sm.saveChanges();