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