You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ha...@apache.org on 2008/10/13 09:13:56 UTC
svn commit: r703930 - in
/ofbiz/trunk/applications/content/src/org/ofbiz/content/email:
EmailServices.java EmailWorker.java
Author: hansbak
Date: Mon Oct 13 00:13:55 2008
New Revision: 703930
URL: http://svn.apache.org/viewvc?rev=703930&view=rev
Log:
make the recieval of attachments possible with html messages
Modified:
ofbiz/trunk/applications/content/src/org/ofbiz/content/email/EmailServices.java
ofbiz/trunk/applications/content/src/org/ofbiz/content/email/EmailWorker.java
Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/email/EmailServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/email/EmailServices.java?rev=703930&r1=703929&r2=703930&view=diff
==============================================================================
--- ofbiz/trunk/applications/content/src/org/ofbiz/content/email/EmailServices.java (original)
+++ ofbiz/trunk/applications/content/src/org/ofbiz/content/email/EmailServices.java Mon Oct 13 00:13:55 2008
@@ -850,12 +850,13 @@
commEventMap.put("roleTypeIdTo", "_NA_");
// get the content(type) part
+ Object messageContent = message.getContent();
if (contentType.startsWith("text")) {
- commEventMap.put("content", message.getContent());
+ commEventMap.put("content", messageContent);
commEventMap.put("contentMimeTypeId", contentType);
- } else if (contentType.startsWith("multipart") || contentType.startsWith("Multipart")) {
+ } else if (messageContent instanceof Multipart) {
contentIndex = "";
- commEventMap = addMessageBody(commEventMap, (Multipart) message.getContent());
+ commEventMap = addMessageBody(commEventMap, (Multipart) messageContent);
}
// check for for a reply to communication event (using in-reply-to the parent messageID)
@@ -956,9 +957,9 @@
result = dispatcher.runSync("createCommunicationEvent", commEventMap);
communicationEventId = (String)result.get("communicationEventId");
- // store attachments
- if (contentType.startsWith("multipart") || contentType.startsWith("Multipart")) {
- int attachmentCount = EmailWorker.addAttachmentsToCommEvent(message, communicationEventId, dispatcher, userLogin);
+ if (messageContent instanceof Multipart) {
+ Debug.logInfo("===message has attachments=====", module);
+ int attachmentCount = EmailWorker.addAttachmentsToCommEvent((Multipart) messageContent, subject, communicationEventId, dispatcher, userLogin);
if (Debug.infoOn()) Debug.logInfo(attachmentCount + " attachments added to CommunicationEvent:" + communicationEventId,module);
}
Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/email/EmailWorker.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/email/EmailWorker.java?rev=703930&r1=703929&r2=703930&view=diff
==============================================================================
--- ofbiz/trunk/applications/content/src/org/ofbiz/content/email/EmailWorker.java (original)
+++ ofbiz/trunk/applications/content/src/org/ofbiz/content/email/EmailWorker.java Mon Oct 13 00:13:55 2008
@@ -46,21 +46,19 @@
return fieldValue;
}
- public static int addAttachmentsToCommEvent(MimeMessage message, String communicationEventId, LocalDispatcher dispatcher, GenericValue userLogin)
+ public static int addAttachmentsToCommEvent(Multipart messageContent, String subject, String communicationEventId, LocalDispatcher dispatcher, GenericValue userLogin)
throws MessagingException, IOException, GenericServiceException {
Map commEventMap = FastMap.newInstance();
commEventMap.put("communicationEventId", communicationEventId);
commEventMap.put("contentTypeId", "DOCUMENT");
commEventMap.put("mimeTypeId", "text/html");
commEventMap.put("userLogin", userLogin);
- String subject = message.getSubject();
if (subject != null && subject.length() > 80) {
subject = subject.substring(0,80); // make sure not too big for database field. (20 characters for filename)
}
currentIndex = "";
attachmentCount = 0;
- return addMultipartAttachementToComm((Multipart)message.getContent(), commEventMap, subject, dispatcher, userLogin);
-
+ return addMultipartAttachementToComm(messageContent, commEventMap, subject, dispatcher, userLogin);
}
private static String currentIndex = "";
private static int attachmentCount = 0;
@@ -68,29 +66,35 @@
throws MessagingException, IOException, GenericServiceException {
try {
int multipartCount = multipart.getCount();
+ // Debug.logInfo(currentIndex + "====number of attachments: " + multipartCount, module);
for (int i=0; i < multipartCount; i++) {
+ // Debug.logInfo(currentIndex + "====processing attachment: " + i, module);
Part part = multipart.getBodyPart(i);
String thisContentTypeRaw = part.getContentType();
+ // Debug.logInfo("====thisContentTypeRaw: " + thisContentTypeRaw, module);
int idx2 = thisContentTypeRaw.indexOf(";");
if (idx2 == -1) idx2 = thisContentTypeRaw.length();
String thisContentType = thisContentTypeRaw.substring(0, idx2);
String disposition = part.getDisposition();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
- if (thisContentType.startsWith("multipart") || thisContentType.startsWith("Multipart")) {
+ if (part instanceof Multipart) {
currentIndex = currentIndex.concat("." + i);
- return addMultipartAttachementToComm((Multipart) part.getContent(), commEventMap, subject, dispatcher, userLogin);
+ // Debug.logInfo("=====attachment contain attachment, index:" + currentIndex, module);
+ return addMultipartAttachementToComm((Multipart) part.getContent(), commEventMap, subject, dispatcher, userLogin);
}
-
+ // Debug.logInfo("=====attachment not contains attachment, index:" + currentIndex, module);
+ // Debug.logInfo("=====check for currentIndex(" + currentIndex + ") against master contentIndex(" + EmailServices.contentIndex + ")", module);
if(currentIndex.concat("." + i).equals(EmailServices.contentIndex)) continue;
// The first test should not pass, because if it exists, it should be the bodyContentIndex part
- if (((disposition == null) && (i == 0) && thisContentType.startsWith("text"))
+ // Debug.logInfo("====check for disposition: " + disposition + " contentType: '" + thisContentType + "' variable i:" + i, module);
+ if ((disposition == null && thisContentType.startsWith("text"))
|| ((disposition != null)
&& (disposition.equals(Part.ATTACHMENT) || disposition.equals(Part.INLINE))
) )
{
- String attFileName = part.getFileName();
+ String attFileName = part.getFileName();
+ Debug.logInfo("===processing attachment: " + attFileName, module);
if (!UtilValidate.isEmpty(attFileName)) {
commEventMap.put("contentName", attFileName);
commEventMap.put("description", subject + "-" + attachmentCount);