[Spambayes-checkins] spambayes/Outlook2000 msgstore.py,1.18,1.19
Mark Hammond
mhammond@users.sourceforge.net
Sat Nov 2 12:09:38 2002
Update of /cvsroot/spambayes/spambayes/Outlook2000
In directory usw-pr-cvs1:/tmp/cvs-serv812
Modified Files:
msgstore.py
Log Message:
Nice patch from Piers Haken that does the best we can with Exchange Server
delivered messages.
Index: msgstore.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/msgstore.py,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** msgstore.py 2 Nov 2002 06:12:34 -0000 1.18
--- msgstore.py 2 Nov 2002 12:09:36 -0000 1.19
***************
*** 351,355 ****
--- 351,379 ----
body = self._GetPotentiallyLargeStringProp(prop_ids[1], data[1])
html = self._GetPotentiallyLargeStringProp(prop_ids[2], data[2])
+ # Mail delivered internally via Exchange Server etc may not have
+ # headers - fake some up.
+ if not headers:
+ headers = self._GetFakeHeaders ()
+ # Mail delivered via the Exchange Internet Mail MTA may have
+ # gibberish at the start of the headers - fix this.
+ elif headers.startswith("Microsoft Mail"):
+ headers = "X-MS-Mail-Gibberish: " + headers
return "%s\n%s\n%s" % (headers, html, body)
+
+ def _GetFakeHeaders(self):
+ # This is designed to fake up some SMTP headers for messages
+ # on an exchange server that do not have such headers of their own
+ prop_ids = PR_SUBJECT_A, PR_DISPLAY_NAME_A, PR_DISPLAY_TO_A, PR_DISPLAY_CC_A
+ hr, data = self.mapi_object.GetProps(prop_ids,0)
+ subject = self._GetPotentiallyLargeStringProp(prop_ids[0], data[0])
+ sender = self._GetPotentiallyLargeStringProp(prop_ids[1], data[1])
+ to = self._GetPotentiallyLargeStringProp(prop_ids[2], data[2])
+ cc = self._GetPotentiallyLargeStringProp(prop_ids[3], data[3])
+ headers = ["X-Exchange-Message: true"]
+ if subject: headers.append("Subject: "+subject)
+ if sender: headers.append("From: "+sender)
+ if to: headers.append("To: "+to)
+ if cc: headers.append("CC: "+cc)
+ return "\n".join(headers)
def _EnsureObject(self):