(self, raw_message)
| 134 | return ''.join([ unicode(t[0], t[1] or default_charset) for t in dh ]) |
| 135 | |
| 136 | def parse(self, raw_message): |
| 137 | raw_headers = raw_message[0] |
| 138 | raw_email = raw_message[1] |
| 139 | |
| 140 | self.message = email.message_from_string(raw_email) |
| 141 | self.headers = self.parse_headers(self.message) |
| 142 | |
| 143 | self.to = self.message['to'] |
| 144 | self.fr = self.message['from'] |
| 145 | self.delivered_to = self.message['delivered_to'] |
| 146 | |
| 147 | self.subject = self.parse_subject(self.message['subject']) |
| 148 | |
| 149 | if self.message.get_content_maintype() == "multipart": |
| 150 | for content in self.message.walk(): |
| 151 | if content.get_content_type() == "text/plain": |
| 152 | self.body = content.get_payload(decode=True) |
| 153 | elif content.get_content_type() == "text/html": |
| 154 | self.html = content.get_payload(decode=True) |
| 155 | elif self.message.get_content_maintype() == "text": |
| 156 | self.body = self.message.get_payload() |
| 157 | |
| 158 | self.sent_at = datetime.datetime.fromtimestamp(time.mktime(email.utils.parsedate_tz(self.message['date'])[:9])) |
| 159 | |
| 160 | self.flags = self.parse_flags(raw_headers) |
| 161 | |
| 162 | self.labels = self.parse_labels(raw_headers) |
| 163 | |
| 164 | if re.search(r'X-GM-THRID (\d+)', raw_headers): |
| 165 | self.thread_id = re.search(r'X-GM-THRID (\d+)', raw_headers).groups(1)[0] |
| 166 | if re.search(r'X-GM-MSGID (\d+)', raw_headers): |
| 167 | self.message_id = re.search(r'X-GM-MSGID (\d+)', raw_headers).groups(1)[0] |
| 168 | |
| 169 | |
| 170 | # Parse attachments into attachment objects array for this message |
| 171 | self.attachments = [ |
| 172 | Attachment(attachment) for attachment in self.message._payload |
| 173 | if not isinstance(attachment, basestring) and attachment.get('Content-Disposition') is not None |
| 174 | ] |
| 175 | |
| 176 | |
| 177 | def fetch(self): |
no test coverage detected