Author: sgoeschl
Date: Mon Sep 5 20:22:09 2011
New Revision: 1165409
URL: http://svn.apache.org/viewvc?rev=1165409&view=rev
Log:
Added more tests for MimeMessageParser since real-world usage was cruel to my
code
Added:
commons/proper/email/trunk/src/test/eml/attachment-only.eml
commons/proper/email/trunk/src/test/eml/multipart-report.eml
commons/proper/email/trunk/src/test/eml/simple-reply.eml
Modified:
commons/proper/email/trunk/src/java/org/apache/commons/mail/util/MimeMessageParser.java
commons/proper/email/trunk/src/test/org/apache/commons/mail/util/MimeMessageParserTest.java
Modified:
commons/proper/email/trunk/src/java/org/apache/commons/mail/util/MimeMessageParser.java
URL:
http://svn.apache.org/viewvc/commons/proper/email/trunk/src/java/org/apache/commons/mail/util/MimeMessageParser.java?rev=1165409&r1=1165408&r2=1165409&view=diff
==============================================================================
---
commons/proper/email/trunk/src/java/org/apache/commons/mail/util/MimeMessageParser.java
(original)
+++
commons/proper/email/trunk/src/java/org/apache/commons/mail/util/MimeMessageParser.java
Mon Sep 5 20:22:09 2011
@@ -21,6 +21,7 @@ import javax.activation.DataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
+import javax.mail.Part;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
@@ -32,9 +33,9 @@ import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.List;
/**
@@ -88,7 +89,7 @@ public class MimeMessageParser
* @return the 'to' recipents of the message
* @throws Exception determining the recipients failed
*/
- public Collection getTo() throws Exception
+ public List getTo() throws Exception
{
javax.mail.Address[] recipients =
this.mimeMessage.getRecipients(Message.RecipientType.TO);
return recipients != null ? Arrays.asList(recipients) : new
ArrayList();
@@ -98,7 +99,7 @@ public class MimeMessageParser
* @return the 'cc' recipents of the message
* @throws Exception determining the recipients failed
*/
- public Collection getCc() throws Exception
+ public List getCc() throws Exception
{
javax.mail.Address[] recipients =
this.mimeMessage.getRecipients(Message.RecipientType.CC);
return recipients != null ? Arrays.asList(recipients) : new
ArrayList();
@@ -108,7 +109,7 @@ public class MimeMessageParser
* @return the 'bcc' recipents of the message
* @throws Exception determining the recipients failed
*/
- public Collection getBcc() throws Exception
+ public List getBcc() throws Exception
{
javax.mail.Address[] recipients =
this.mimeMessage.getRecipients(Message.RecipientType.BCC);
return recipients != null ? Arrays.asList(recipients) : new
ArrayList();
@@ -204,8 +205,8 @@ public class MimeMessageParser
/**
* Parses the MimePart to create a DataSource.
*
- * @param parent the parent MultiPart
- * @param part the part to be processed
+ * @param parent the parent multi-part
+ * @param part the current part to be processed
* @return the DataSource
* @throws MessagingException creating the DataSource failed
* @throws IOException creating the DataSource failed
@@ -218,7 +219,7 @@ public class MimeMessageParser
String contentType = getBaseMimeType(dataSource.getContentType());
byte[] content = this.getContent(dataSource.getInputStream());
ByteArrayDataSource result = new ByteArrayDataSource(content,
contentType);
- String dataSourceName = MimeUtility.decodeText(dataSource.getName());
+ String dataSourceName = getDataSourceName(part, dataSource);
result.setName(dataSourceName);
return result;
@@ -295,6 +296,37 @@ public class MimeMessageParser
}
/**
+ * Determines the name of the data source if it is not already set.
+ *
+ * @param part the mail part
+ * @param dataSource the data source
+ * @return the name of the data source or <b>null</b> if no name can be
determined
+ * @throws MessagingException accessing the part failed
+ * @throws UnsupportedEncodingException decoding the text failed
+ */
+ protected String getDataSourceName(Part part, DataSource dataSource)
+ throws MessagingException, UnsupportedEncodingException
+ {
+ String result = dataSource.getName();
+
+ if(result == null || result.length() == 0)
+ {
+ result = part.getFileName();
+ }
+
+ if(result != null && result.length() > 0)
+ {
+ result = MimeUtility.decodeText( result );
+ }
+ else
+ {
+ result = null;
+ }
+
+ return result;
+ }
+
+ /**
* Read the content of the input stream.
*
* @param is the input stream to process
@@ -323,6 +355,7 @@ public class MimeMessageParser
return result;
}
+
/**
* Parses the mimeType.
*
Added: commons/proper/email/trunk/src/test/eml/attachment-only.eml
URL:
http://svn.apache.org/viewvc/commons/proper/email/trunk/src/test/eml/attachment-only.eml?rev=1165409&view=auto
==============================================================================
--- commons/proper/email/trunk/src/test/eml/attachment-only.eml (added)
+++ commons/proper/email/trunk/src/test/eml/attachment-only.eml Mon Sep 5
20:22:09 2011
@@ -0,0 +1,156 @@
+Date: Fri, 29 Jul 2011 09:41:11 +0200 (CET)
+From: Siegfried GOESCHL <[email protected]>
+Subject: Kunde 100029 Auftrag 3600
+To: <[email protected]>
+Reply-To: Siegfried GOESCHL <[email protected]>
+Message-ID: <[email protected]>
+MIME-Version: 1.0
+Importance: Normal
+X-Priority: 3 (Normal)
+X-Mailer: SAP Web Application Server 7.00
+Content-Type: application/pdf;
+ name="Kunde 100029 Auftrag 3600.pdf"
+Content-Transfer-Encoding: base64
+Content-Description: Kunde 100029 Auftrag 3600
+
+JVBERi0xLjMKJaqrrK0KNCAwIG9iago8PCAvVHlwZSAvSW5mbwovUHJvZHVjZXIgKG51bGwp
+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggMzA0NCAvRmlsdGVyIC9GbGF0ZURlY29k
+ZSAKID4+CnN0cmVhbQp4nMWc23PbuBXG3/1X6KUz2amN4EqAfarcOG6aTSaNlXpmmz7INi1p
+rEtWojbt/vU9oAASpHg5xOzsJpPEdj5C33cInh8BXa5nFzezi58v2GQBf24vuCFCJhOlFZFC
+TpRSRKVsciV1SqjSk302ebj458X17OL1WzFhhtDJ7PmC2n8eL2gxCIXfbOIHUglRbDLbTP79
+6nP2uNwet4sfJv+ZzP5xelxKTAK/4ED/VeVBCsINeOCSSKomV0wSRtPAwmkEOBaOSHhaHEEp
+PLYm2kwoUTAcqJ/P1TQRMK4hJuVOB4MnWrXJIYGEh8XKvRcnb/dii6dPtfMFE4xI60pAWukq
+9ml3qBXr5CaFB/ZRWZJCfXl32LHuOeiNHlOcwo6Td9nxIVVKjHUThpzu89VLtm4G5VA5qkSZ
+NIW6wqzoPqsjnQuuSJKOqYzz4/Qdfsr5zyGqtRNG/fiZNGMKsM2T6oRqSkR3yLGmRQqXX6JG
+FMW5cfpWN+WM1Qz+h9cjfsi2i+wsZKoJE6wMCbOG8Z5zOda2VNAq1Ihz7/04fYcfH1QyQWTj
+VN6str9m69c3Xz43w1ozhgt02LHmFU1JKvFzoPSDDJsYwnmjEV1n+X6+aEurGAzEqvkrGUlV
+zwwe614pDn3R4PXej9N3+CkbEgd2mcYUvr+b/TC54trS7dWfzhoTpsGfwYZCo6RexzlRvazB
+qb0Tp+5CDetCDWQXgp9CM9pFmoHWHuvdt2t0YQozTo3lTJjwdn/cPr18FUmy/5btXdrmAQxm
+G1yLp5IYWk2D/1ZfMk6D72Qg0vIKrgFh/+rEWT8+YutTggFbfefGybEwC+uppc3aEhUFkVjn
+JRqwdXFenHwAaHAFaVOPyavTe5e/dJKtv7nG2i/ZgC2Oc+PkQ61ecJA1LhOmL6XqZBoy5kjf
+JRTwVSncIGOalCSU1WMKeZmetzwcPGJ9lyxDyr0bJx9CmYALiTcuUk47+dVLjSa/ZMqJhqsU
+uVjCyp0XL2/30sCWTO360Ph8XdgaIEW0Y9eXRxTE2vFyJLhqGT9kh0O2z1bbQ56t17/s9vvV
+4zJvLqTxXT06i2/V+Fqd/Hg9kjK18J4yZ+cZ1dmjrfs+jS/NyY3XD3AG+pdJ6kEZxYGmv+dF
+B/AdG1+gkx+vH+rBcG4p083I9PL8xCK7e7Rz37THVMb6wSbVMIs1aySFtVFbVmSLj/buiYPW
+Oz9ej0ROoyV3Iae/zZ8hR8LdifCeFSWS9zZwpNx7cXIccowkHMSnO4cu5Az1+GjHvk3jC1LY
+cXIscsKMn/arw2bevkaSOiEikSdh2r5ESpLWH0veMWRiH9vNn/vVvjril2z/PVsdsm31o/nx
+ufrmaZVV3yyyr0LK7VO2z+0BrY+krHnhVoTz/Xybr7KH7Gm1XQBQw4d5/iq03NceqWaj3Lb0
+P1gF/3ncWmJ3eZAGzqdLO12vF9kG4B6OfZsdHpc2y3N+gAo8rLZPzl078AcAGz2TSmqiZ6rz
+4/RY4IdTzwOfdwG/F7HR1kteokvj3Dg9DvhhUCZRwB/ATnSAEpvoAjk/Tj+4tkxgsrN6ZHWp
+TRfusTnH+i6ROaIuhR9kTre4rOU09DI9m79ItkYbL1mP1Xs/To9lfRi0h/W9fD1jPaxZU1gF
+47ZHkWrvxKlxpBeSCO3SyU7SD6A11rBvz+hqFGacGsv5MOF0C6BZzxff1vM8zzpwBa4UdbxP
+2nmvOnZKzwqIJERsScqujy24c+PkWF6FJfS8Ep286iNErPOy22Pr4rw4eT+tYCKlqazHZBy3
+ETrQNmMDlF0fWx7nxsmRG6H1xLpncYqNOdJ32fPxVSncIGP6pWkYkxOqZc/SdAAPsdZLWiHl
+3o2TY2FVS9oNq15ENGEloE2kUEYcrJBq58SrcbBinIhUuXurTlgN8CHWsOvM+GpYM16NhVWY
+cHp83s6Xm6wXVlQS5Z+g4u2sGouqfjjEFsQ3fHS5T268HIuqsIAeVbITVX14iHXuOz26Licv
+Xo5bWIUxJW4ndaBpxvr3HR9dnZMbL8eSKgzMxaXufMoOG3Okb9/uR1TFusHGNIroZsxU9W2h
+DpAh1rjnFFbu3Hg5llO109nJqX46nHHK9lzjiyytZdbX95Fy78XJUaQSKSxDGavWEK2kGoJD
+tGPfmfEFKew4OZJVtYzv55vVdjl/CHYnmaGEmer7959+JO0QEyDgRv0O26FCW89/6G6oSOA8
+CPUb7oYOIDJ6WpTcQ08758fpkciuzSMKxDaUK9O5vOzlZLT3Enro2jg3To+idi0p8vnPAYBE
+Byjxhy6Q8+P0yO3QWuS0Z4GJzTnWd4m/EXUp/CBzuu3Qes4+bg+QMtp4CW6s3vtxeiS5a0F7
+yN1LyzNyg02j9fDTtY6DSLn34uQ4ctsnq+CEnxYQneQeQGW0Y9+i8QUp7Dg5ltxhxi+bdbZ9
+8WtM35F2DyGRPMo7+NPf76PDlT0cXTznx+mx/AmrceKPhC7QyZ++jh/tvWzf6No4N06Pep1n
+LSnu2biBNhjtv2zj6Po4P06PXDbWEjPexx9k0LHGyzY+ojCFH2RQz5/aqTV9/Onv99HGS/5g
+9d6P02P5Ewbt4U9vzz/jD/yrE4PmD1LuvTg5jj92B5dp/7xqF38GGn60Y9+i8QUp7Dg5lj9h
+xndbWPzsnq8+wGIsW/95Viy89vPlhgxQp7/LR0cqOze6ZM6P02OpE9agoA5TUndTp6/PR3sv
+uza6Ns6N0+NWPWFSluCw09/9ogOU3RtdIOfH6bHYqUWWl0Z3YgcZdKzxsnuPKEzhBxnU7VfW
+gnKhe14GMtDno52X3MHqvR+nx3KnlrSbO729vskdbhKQ+Qcf3LHEyp0XL8dxh1PCqale5djO
+nYFGH+3YNekRBbF2vBzLnTDj3eMyW8Eq5/DNEmddvL2gvlXZuvppDklBYvjvsXVJrXn9h+5d
+8pRXb7X5bfYu+6kZPUE8CfET8OTH67EUD2eUWzuytJvifdyM9u4hiK/NyY3X4ygeJkU+4zgA
+k+gAHob4Ap38eD1277IWuW/tiMw51rdH4Zi6WD/YnB7iYU6W9G5e9kMz2rmHOFrv/Hg9FuJh
+0gri9i3jpv6WcfeZLNw2PuleT/PTfGkxcXjZbZ9W+WoHje8v1XUggmtiNl8EzX3+UH3tPxPm
+8DTPj5tgv225DY6YPvx6XJTmRIu5FGhnm5Dfib07bjbBAB+zPN9Zc0wAC2AWqMkrCbcc+jJ8
+A0P18QbNkZndo/Zvx7u/mxVDaQVdsRjKMHGpDGYgwKORbrV+e3M3/TC7vpl9nt4WA8I1mXpv
+xrBL2TpkcdIbn9ej7ZNovPq4HqbhxpsJe+rDz8ph0NqovfeB31KS1J9WzeAK55PHzcXrdxs2
+ebM7HdMyD0RiiKJ8ouGRUu2CvJnn86AB/u+QZ5tDcPaOh3y/ChTT20Z1ylFlUo36t93m2zHP
+9nDw/HAITmbSdbTQ1dGM0eDM3r+7+djyWp/G7E4Mg754Ov5fu/XL4fu8diNx5tsfB9X2x/19
+Dnct64M1/RXmWmC7ecfkD05EeTCj4bNg96uz+w5/jJLlMV8BX1Dw/T5bPS7bpsipPALSaVgD
+SFgKMKLhpuUKBqHBDKmXU9SqUV6m2z2xUzVVEmbaBHqGaj0ZolaT+kVuj5cKEATHw3ynwIDq
+JUlnwwTVeWvvo9br1eIlW+XVWIrb5mdvSwmVvWMFVXt/hNO03dousbeDJKkxdhAJNy2i+S6l
+cgAI7QeYHp/tR6IcgiE0Y4UPStPy1cBnQwBLm0NUSVLBWqvSeskLooPP51JEKBmczZaP/WAG
+Tjg0yMReJjL+0vVfX4UtfXf1cHxcLudr+8bkv35f7XO48Z3DXe+DfSaFzPPmTIaERUGgI6UO
+KNfT++nt609371sf4/rHn4JLmNHw+g5k73fbfAfTtPoJ5RrUKpG0ed0zncCj248YI5xLP1kX
+Kxsalh7hKiDPghXE26CZCGkYzVutuF6wyIo3bDcv7JYDvrx7ExB0OvsClhPa7Hdcw81EYt8B
+AxPBle7q6upMBUiw+wCwUPBn+w4unPAVKdX0+j/On2AjCmVuZHN0cmVhbQplbmRvYmoKNiAw
+IG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW0xCi9MZW5n
+dGggMzMzNAovV2lkdGggMjUwCi9IZWlnaHQgNjYKL0JpdHNQZXJDb21wb25lbnQgOAovQ29s
+b3JTcGFjZSAvRGV2aWNlUkdCCi9NYXNrIFsyNTUgMjU1IDI1NSAyNTUgMjU1IDI1NV0KL0Zp
+bHRlciAvRmxhdGVEZWNvZGUgCj4+CnN0cmVhbQp4nO1dzYpdRRB+FIV5AgX3sxqI+AgGn8BF
+4guouHKjwVUSwVXcZBEwuM6MCxUhgbsIJMoEDMaFQRCS7CYcP+Zjikr/VFf3OX3vnbldNMOd
+c8/trtPn6+9UV1fXmaZGOXn9+p9//7v5w2+Xv7jN8uWto9+fPn/x8lVtVfjJk+Mn1776+qMP
+L6Pgw1/PnqH+VtWGDFlMgEOgEdgGwvc//vbg6ne6XP3mx9UffzuxitMePXoMhL/3zrt7b70t
+Bf9+cuUqWul9LUOGGAJ83ntwDFQD5zHUeRx/wflFwOME0LgGeVyODg/Xc11DhgQCfN756WEO
+5wHmAXjDqkFVN65ft6E+AD9kUwJ8/vrwTxvkAeAxNHK1wYAJrJdcwWnDpBmyZgHaYZMXWV2j
+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
+8j52dbcukrw9LlULIrxrbZPlos8z16LM+MCx8jozmwZjn8zem6ZFjPZJ0XtgUYgZydfDSZpN
+7TsNfDKyfIzz+SY4TSwyHPhSKnQpr66qZ5LCReTcDcJVOB8fOM2wnD1O4/myuFumbbGbXeqM
+pRfffvNjOhhi752+BtFWm2Qu01hgj0DVdQJpOBg0hHOSadDkK9EheHUalxjExUQfvmYnNKcd
+UISTrrAqIZUtaAjqUSUU9H9uEdCQk7OXNrKjmNWWSwNL6VkUtAXNuU40p6ArZr7ekZ4E4FDy
++srSFXsGTTDz8HweYM/znbCeu8bztZ0QW8XaSRJcVK5+fIUrQonvuPYI6YNQmG/mTS434zhf
+cbvOZd8hQ7ZN/gcEUSj9CmVuZHN0cmVhbQplbmRvYmoKNyAwIG9iago8PCAvVHlwZSAvUGFn
+ZQovUGFyZW50IDEgMCBSCi9NZWRpYUJveCBbIDAgMCA2MTIgNzkxIF0KL1Jlc291cmNlcyAz
+IDAgUgovQ29udGVudHMgNSAwIFIKPj4KZW5kb2JqCjggMCBvYmoKPDwgL1R5cGUgL0ZvbnQK
+L1N1YnR5cGUgL1R5cGUxCi9OYW1lIC9GMwovQmFzZUZvbnQgL0hlbHZldGljYS1Cb2xkCi9F
+bmNvZGluZyAvV2luQW5zaUVuY29kaW5nID4+CmVuZG9iago5IDAgb2JqCjw8IC9UeXBlIC9G
+b250Ci9TdWJ0eXBlIC9UeXBlMQovTmFtZSAvRjEKL0Jhc2VGb250IC9IZWx2ZXRpY2EKL0Vu
+Y29kaW5nIC9XaW5BbnNpRW5jb2RpbmcgPj4KZW5kb2JqCjEgMCBvYmoKPDwgL1R5cGUgL1Bh
+Z2VzCi9Db3VudCAxCi9LaWRzIFs3IDAgUiBdID4+CmVuZG9iagoyIDAgb2JqCjw8IC9UeXBl
+IC9DYXRhbG9nCi9QYWdlcyAxIDAgUgogPj4KZW5kb2JqCjMgMCBvYmoKPDwgCi9Gb250IDw8
+IC9GMyA4IDAgUiAvRjEgOSAwIFIgPj4gCi9Qcm9jU2V0IFsgL1BERiAvSW1hZ2VDIC9UZXh0
+IF0gL1hPYmplY3QgPDwvSW0xIDYgMCBSIAogPj4KPj4gCmVuZG9iagp4cmVmCjAgMTAKMDAw
+MDAwMDAwMCA2NTUzNSBmIAowMDAwMDA3MDU0IDAwMDAwIG4gCjAwMDAwMDcxMTIgMDAwMDAg
+biAKMDAwMDAwNzE2MiAwMDAwMCBuIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAwNjUg
+MDAwMDAgbiAKMDAwMDAwMzE4MyAwMDAwMCBuIAowMDAwMDA2NzI5IDAwMDAwIG4gCjAwMDAw
+MDY4MzUgMDAwMDAgbiAKMDAwMDAwNjk0NyAwMDAwMCBuIAp0cmFpbGVyCjw8Ci9TaXplIDEw
+Ci9Sb290IDIgMCBSCi9JbmZvIDQgMCBSCj4+CnN0YXJ0eHJlZgo3Mjc3CiUlRU9GCg==
+
Added: commons/proper/email/trunk/src/test/eml/multipart-report.eml
URL:
http://svn.apache.org/viewvc/commons/proper/email/trunk/src/test/eml/multipart-report.eml?rev=1165409&view=auto
==============================================================================
--- commons/proper/email/trunk/src/test/eml/multipart-report.eml (added)
+++ commons/proper/email/trunk/src/test/eml/multipart-report.eml Mon Sep 5
20:22:09 2011
@@ -0,0 +1,55 @@
+Received: from SMAIL02.wstw.energy-it.net ([fe80::dc86:7fc3:8802:3e22]) by
+ SMAILHC1.wstw.energy-it.net ([fe80::a944:4a29:c117:a799%11]) with mapi; Thu,
+ 18 Aug 2011 14:22:14 +0200
+From: GOESCHL Siegfried <[email protected]>
+To: GOESCHL Siegfried <[email protected]>
+Date: Thu, 18 Aug 2011 14:22:13 +0200
+Subject: Gelesen:
+Thread-Index: AcxdoXQU2GzYzoWSQvSyj9ETzQX10wAAAGd+
+Message-ID:
+ <26627488c6028e45925082da465aafa01f331a2...@smail02.wstw.energy-it.net>
+Accept-Language: de-DE, de-AT
+Content-Language: de-DE
+X-MS-Exchange-Organization-AuthAs: Internal
+X-MS-Exchange-Organization-AuthMechanism: 04
+X-MS-Exchange-Organization-AuthSource: SMAILHC1.wstw.energy-it.net
+X-MS-Has-Attach:
+X-MS-Exchange-Organization-SCL: -1
+X-MS-TNEF-Correlator:
+acceptlanguage: de-DE, de-AT
+Content-Type: multipart/report;
+
boundary="_000_26627488C6028E45925082DA465AAFA01F331A20C9SMAIL02wstwen_";
+ report-type=disposition-notification
+MIME-Version: 1.0
+
+--_000_26627488C6028E45925082DA465AAFA01F331A20C9SMAIL02wstwen_
+Content-Type: text/html; charset="us-ascii"
+Content-Transfer-Encoding: quoted-printable
+
+<html><head>
+<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
+>
+<meta name=3D"Generator" content=3D"Microsoft Exchange Server">
+<!-- converted from text -->
+<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left:=
+ #800000 2px solid; } --></style></head>
+<body>
+<font size=3D"2"><div class=3D"PlainText">Ihre Nachricht wurde gelesen am D=
+onnerstag, 18. August 2011 14:22:13 (GMT+01:00) Amsterdam, Berlin, Bern=
+, Rom, Stockholm, Wien.</div></font>
+
+</body>
+</html>
+
+--_000_26627488C6028E45925082DA465AAFA01F331A20C9SMAIL02wstwen_
+Content-Type: message/disposition-notification
+
+Final-recipient: RFC822; [email protected]
+Disposition: automatic-action/MDN-sent-automatically; displayed
+X-MSExch-Correlation-Key: nT6KShjpDUOEtYnQrSJFFA==
+Original-Message-ID:
+ <26627488c6028e45925082da465aafa01f33108...@smail02.wstw.energy-it.net>
+X-Display-Name: GOESCHL Siegfried
+
+
+--_000_26627488C6028E45925082DA465AAFA01F331A20C9SMAIL02wstwen_--
Added: commons/proper/email/trunk/src/test/eml/simple-reply.eml
URL:
http://svn.apache.org/viewvc/commons/proper/email/trunk/src/test/eml/simple-reply.eml?rev=1165409&view=auto
==============================================================================
--- commons/proper/email/trunk/src/test/eml/simple-reply.eml (added)
+++ commons/proper/email/trunk/src/test/eml/simple-reply.eml Mon Sep 5
20:22:09 2011
@@ -0,0 +1,98 @@
+From - Thu Aug 18 14:02:58 2011
+X-Account-Key: account4
+X-UIDL: 01GJtU-1Qxq2b3ZyQ-0066uc
+X-Mozilla-Status: 0011
+X-Mozilla-Status2: 00000000
+X-Mozilla-Keys:
+Return-Path: <[email protected]>
+Delivered-To: GMX delivery to [email protected]
+Received: (qmail invoked by alias); 18 Aug 2011 11:14:20 -0000
+Received: from hermes.apache.org (HELO mail.apache.org) [140.211.11.3]
+ by mx0.gmx.net (mx001) with SMTP; 18 Aug 2011 13:14:20 +0200
+Received: (qmail 9342 invoked by uid 99); 18 Aug 2011 11:14:12 -0000
+Received: from minotaur.apache.org (HELO minotaur.apache.org) (140.211.11.9)
+ by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 Aug 2011 11:14:12 +0000
+Received: by minotaur.apache.org (Postfix)
+ id 42DAF8298; Thu, 18 Aug 2011 11:14:11 +0000 (UTC)
+Delivered-To: [email protected]
+Received: from mail.apache.org (hermes.apache.org [140.211.11.3])
+ by minotaur.apache.org (Postfix) with SMTP id 091BD828C
+ for <[email protected]>; Thu, 18 Aug 2011 11:14:10 +0000
(UTC)
+Received: (qmail 8207 invoked by uid 500); 18 Aug 2011 11:13:40 -0000
+Delivered-To: [email protected]
+Received: (qmail 7829 invoked by uid 500); 18 Aug 2011 11:13:25 -0000
+Mailing-List: contact [email protected]; run by ezmlm
+Precedence: bulk
+List-Help: <mailto:[email protected]>
+List-Unsubscribe: <mailto:[email protected]>
+List-Post: <mailto:[email protected]>
+List-Id: <dev.ws.apache.org>
+Reply-To: [email protected]
+Delivered-To: mailing list [email protected]
+Received: (qmail 7789 invoked by uid 99); 18 Aug 2011 11:13:21 -0000
+Received: from minotaur.apache.org (HELO minotaur.apache.org) (140.211.11.9)
+ by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 Aug 2011 11:13:21 +0000
+Received: from localhost (HELO mail-qw0-f49.google.com) (127.0.0.1)
+ (smtp-auth username coheigea, mechanism plain)
+ by minotaur.apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 Aug 2011 11:13:19
+0000
+Received: by qwi2 with SMTP id 2so1860671qwi.22
+ for <[email protected]>; Thu, 18 Aug 2011 04:13:18 -0700 (PDT)
+MIME-Version: 1.0
+Received: by 10.224.187.83 with SMTP id cv19mr530954qab.8.1313665998387; Thu,
+ 18 Aug 2011 04:13:18 -0700 (PDT)
+Reply-To: [email protected]
+Received: by 10.229.225.7 with HTTP; Thu, 18 Aug 2011 04:13:18 -0700 (PDT)
+In-Reply-To: <[email protected]>
+References: <[email protected]>
+Date: Thu, 18 Aug 2011 12:13:18 +0100
+Message-ID:
<CAB8XdGCekcZe0=MUxJ3QL0Zgs=yvdtkr4aghd2xmueyreki...@mail.gmail.com>
+Subject: Re: java.lang.NoClassDefFoundError:
org/bouncycastle/asn1/pkcs/PrivateKeyInfo
+From: Colm O hEigeartaigh <[email protected]>
+To: [email protected]
+Content-Type: text/plain; charset=ISO-8859-1
+X-GMX-Antivirus: 0 (no virus found)
+X-GMX-Antispam: -2 (not scanned, spam filter disabled);
+ Detail=5D7Q89H36p4L00VTXC6D4q0N+AH0PUCnKGJbGgJLbSXk30NezpdxUg==V1;
+
+BouncyCastle is optional. If you turn on debug level logging do you
+see any error messages about installing the BouncyCastle provider?
+What does your crypto.properties look like?
+
+Colm.
+
+On Thu, Aug 18, 2011 at 4:40 AM, jaybytez <[email protected]> wrote:
+>
+> Does WSS4J 1.6* have a dependency on a bouncycastle library?
+>
+> The reason I ask is that we are running CXF 2.4.1 web services on a WLS 11
+> RHEL 5.5 machine with JDK 1.6.24 and in one environment my web services with
+> digital signatures (via WSS4J) they work and then in my other environment it
+> throws the following exception:
+>
+> java.lang.NoClassDefFoundError: org/bouncycastle/asn1/pkcs/PrivateKeyInfo
+>
+> Thanks...jay
+> --
+> View this message in context:
http://old.nabble.com/java.lang.NoClassDefFoundError%3A-org-bouncycastle-asn1-pkcs-PrivateKeyInfo-tp32284689p32284689.html
+> Sent from the WSS4J mailing list archive at Nabble.com.
+>
+>
+> ---------------------------------------------------------------------
+> To unsubscribe, e-mail: [email protected]
+> For additional commands, e-mail: [email protected]
+>
+>
+
+
+
+--
+Colm O hEigeartaigh
+
+http://coheigea.blogspot.com/
+Talend - http://www.talend.com
+
+---------------------------------------------------------------------
+To unsubscribe, e-mail: [email protected]
+For additional commands, e-mail: [email protected]
+
+
Modified:
commons/proper/email/trunk/src/test/org/apache/commons/mail/util/MimeMessageParserTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/email/trunk/src/test/org/apache/commons/mail/util/MimeMessageParserTest.java?rev=1165409&r1=1165408&r2=1165409&view=diff
==============================================================================
---
commons/proper/email/trunk/src/test/org/apache/commons/mail/util/MimeMessageParserTest.java
(original)
+++
commons/proper/email/trunk/src/test/org/apache/commons/mail/util/MimeMessageParserTest.java
Mon Sep 5 20:22:09 2011
@@ -68,6 +68,29 @@ public class MimeMessageParserTest
assertFalse(mimeMessageParser.hasAttachments());
}
+ public void testParseSimpleReplyEmail() throws Exception
+ {
+ Session session = Session.getDefaultInstance(new Properties());
+ MimeMessage message = MimeMessageUtils.createMimeMessage(session, new
File("./src/test/eml/simple-reply.eml"));
+ MimeMessageParser mimeMessageParser = new MimeMessageParser(message);
+
+ mimeMessageParser.parse();
+
+ assertEquals("Re: java.lang.NoClassDefFoundError:
org/bouncycastle/asn1/pkcs/PrivateKeyInfo", mimeMessageParser.getSubject());
+ assertNotNull(mimeMessageParser.getMimeMessage());
+ assertFalse(mimeMessageParser.isMultipart());
+ assertFalse(mimeMessageParser.hasHtmlContent());
+ assertTrue(mimeMessageParser.hasPlainContent());
+ assertNotNull(mimeMessageParser.getPlainContent());
+ assertNull(mimeMessageParser.getHtmlContent());
+ assertTrue(mimeMessageParser.getTo().size() == 1);
+ assertTrue(mimeMessageParser.getCc().size() == 0);
+ assertTrue(mimeMessageParser.getBcc().size() == 0);
+ assertEquals("[email protected]", mimeMessageParser.getFrom());
+ assertEquals("[email protected]", mimeMessageParser.getReplyTo());
+ assertFalse(mimeMessageParser.hasAttachments());
+ }
+
public void testParseHtmlEmailWithAttachments() throws Exception
{
DataSource dataSource;
@@ -101,4 +124,78 @@ public class MimeMessageParserTest
assertNotNull(dataSource);
assertEquals("application/pdf", dataSource.getContentType());
}
+
+ /**
+ * This test parses an "email read notification" where the resulting data
source has no name. Originally
+ * the missing name caused a NPE in MimeUtility.decodeText().
+ *
+ * @throws Exception the test failed
+ */
+ public void testParseMultipartReport() throws Exception
+ {
+ DataSource dataSource;
+ Session session = Session.getDefaultInstance(new Properties());
+ MimeMessage message = MimeMessageUtils.createMimeMessage(session, new
File("./src/test/eml/multipart-report.eml"));
+ MimeMessageParser mimeMessageParser = new MimeMessageParser(message);
+
+ mimeMessageParser.parse();
+
+ assertEquals("Gelesen: ", mimeMessageParser.getSubject());
+ assertNotNull(mimeMessageParser.getMimeMessage());
+ assertTrue(mimeMessageParser.isMultipart());
+ assertTrue(mimeMessageParser.hasHtmlContent());
+ assertFalse(mimeMessageParser.hasPlainContent());
+ assertNull(mimeMessageParser.getPlainContent());
+ assertNotNull(mimeMessageParser.getHtmlContent());
+ assertTrue(mimeMessageParser.getTo().size() == 1);
+ assertTrue(mimeMessageParser.getCc().size() == 0);
+ assertTrue(mimeMessageParser.getBcc().size() == 0);
+ assertEquals("[email protected]",
mimeMessageParser.getFrom());
+ assertEquals("[email protected]",
mimeMessageParser.getReplyTo());
+ assertTrue(mimeMessageParser.hasAttachments());
+ List attachmentList = mimeMessageParser.getAttachmentList();
+ assertTrue(attachmentList.size() == 1);
+
+ dataSource = (DataSource) attachmentList.get(0);
+ assertNotNull(dataSource);
+ assertNull(dataSource.getName());
+ assertEquals("message/disposition-notification",
dataSource.getContentType());
+ }
+
+ /**
+ * This test parses a SAP generated email which only contains a PDF but no
email
+ * text.
+ *
+ * @throws Exception the test failed
+ */
+ public void testAttachmentOnly() throws Exception
+ {
+ DataSource dataSource;
+ Session session = Session.getDefaultInstance(new Properties());
+ MimeMessage message = MimeMessageUtils.createMimeMessage(session, new
File("./src/test/eml/attachment-only.eml"));
+ MimeMessageParser mimeMessageParser = new MimeMessageParser(message);
+
+ mimeMessageParser.parse();
+
+ assertEquals("Kunde 100029 Auftrag 3600",
mimeMessageParser.getSubject());
+ assertNotNull(mimeMessageParser.getMimeMessage());
+ assertFalse(mimeMessageParser.isMultipart());
+ assertFalse(mimeMessageParser.hasHtmlContent());
+ assertFalse(mimeMessageParser.hasPlainContent());
+ assertNull(mimeMessageParser.getPlainContent());
+ assertNull(mimeMessageParser.getHtmlContent());
+ assertTrue(mimeMessageParser.getTo().size() == 1);
+ assertTrue(mimeMessageParser.getCc().size() == 0);
+ assertTrue(mimeMessageParser.getBcc().size() == 0);
+ assertEquals("[email protected]",
mimeMessageParser.getFrom());
+ assertEquals("[email protected]",
mimeMessageParser.getReplyTo());
+ assertTrue(mimeMessageParser.hasAttachments());
+ List attachmentList = mimeMessageParser.getAttachmentList();
+ assertTrue(attachmentList.size() == 1);
+
+ dataSource = mimeMessageParser.findAttachmentByName("Kunde 100029
Auftrag 3600.pdf");
+ assertNotNull(dataSource);
+ assertEquals("application/pdf", dataSource.getContentType());
+ }
+
}