def __handleText(view, mimePart, parentMIMEContainer, bodyBuffer, counter, buf, level): subtype = mimePart.get_content_subtype() if verbose(): __trace("text/%s" % subtype, buf, level) """Get the attachment data""" body = mimePart.get_payload(decode=1) size = len(body) charset = mimePart.get_content_charset(constants.DEFAULT_CHARSET) lang = mimePart.get("Content-language") if subtype == "plain" or subtype == "rfc822-headers": #XXX: Will want to leverage the language to aid the GUI layer size > 0 and bodyBuffer.append(getUnicodeValue(body, charset)) else: mimeText = Mail.MIMEText(view=view) mimeText.mimeType = mimePart.get_content_type() mimeText.charset = charset mimeText.filesize = len(body) mimeText.filename = __getFileName(mimePart, counter) if lang: mimeText.lang = lang #XXX: This may cause issues since Note no longer a parent mimeText.body = utils.unicodeToText(mimeText, "body", getUnicodeValue(body, charset), \ indexText=False) parentMIMEContainer.mimeParts.append(mimeText) parentMIMEContainer.hasMimeParts = True
def messageObjectToKind(view, messageObject, messageText=None): """ This method converts a email message string to a Chandler C{Mail.MailMessage} object @param messageObject: A C{email.Message} object representation of a mail message @type messageObject: C{email.Message} @return: C{Mail.MailMessage} """ assert isinstance(messageObject, Message.Message), \ "messageObject must be a Python email.Message.Message instance" assert len(messageObject.keys()) > 0, \ "messageObject data is not a valid RFC2882 message" assert messageText is None or isinstance(messageText, str), \ "messageText can either be a string or None" m = Mail.MailMessage(view=view) """Save the original message text in a text blob""" if messageText is None: messageText = messageObject.as_string() m.rfc2822Message = utils.dataToBinary(m, "rfc2822Message", messageText, \ 'message/rfc822', 'bz2') counter = utils.Counter() bodyBuffer = [] buf = None if verbose(): if messageObject.has_key("Message-ID"): messageId = messageObject["Message-ID"] else: messageId = "<Unknown Message>" buf = ["Message: %s\n-------------------------------" % messageId] __parsePart(view, messageObject, m, bodyBuffer, counter, buf) """If the message has attachments set hasMimeParts to True""" if len(m.mimeParts) > 0: m.hasMimeParts = True body = (constants.LF.join(bodyBuffer)).replace(constants.CR, constants.EMPTY) m.body = utils.unicodeToText(m, "body", body, indexText=False) __parseHeaders(view, messageObject, m) if verbose(): logging.warn("\n\n%s\n\n" % '\n'.join(buf)) return m