MCPcopy
hub / github.com/charlierguo/gmail / parse

Method parse

gmail/message.py:136–174  ·  view source on GitHub ↗
(self, raw_message)

Source from the content-addressed store, hash-verified

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):

Callers 3

fetchMethod · 0.95
threadsMethod · 0.80

Calls 5

parse_headersMethod · 0.95
parse_subjectMethod · 0.95
parse_flagsMethod · 0.95
parse_labelsMethod · 0.95
AttachmentClass · 0.85

Tested by

no test coverage detected