Index: core/mail.py
===================================================================
--- core/mail.py	(revision 4992)
+++ core/mail.py	(working copy)
@@ -34,7 +34,7 @@
             val = Header(val, settings.DEFAULT_CHARSET)
         MIMEText.__setitem__(self, name, val)
 
-def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None):
+def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, additional_headers_dict={}):
     """
     Easy wrapper for sending a single message to a recipient list. All members
     of the recipient list will see the other recipients in the 'To' field.
@@ -46,7 +46,7 @@
         auth_user = settings.EMAIL_HOST_USER
     if auth_password is None:
         auth_password = settings.EMAIL_HOST_PASSWORD
-    return send_mass_mail([[subject, message, from_email, recipient_list]], fail_silently, auth_user, auth_password)
+    return send_mass_mail([[subject, message, from_email, recipient_list, additional_headers_dict]], fail_silently, auth_user, auth_password)
 
 def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None):
     """
@@ -71,7 +71,7 @@
             return
         raise
     num_sent = 0
-    for subject, message, from_email, recipient_list in datatuple:
+    for subject, message, from_email, recipient_list, additional_headers_dict in datatuple:
         if not recipient_list:
             continue
         from_email = from_email or settings.DEFAULT_FROM_EMAIL
@@ -85,6 +85,10 @@
         except AttributeError: # Python 2.3 doesn't have random.getrandbits().
             random_bits = ''.join([random.choice('1234567890') for i in range(19)])
         msg['Message-ID'] = "<%d.%s@%s>" % (time.time(), random_bits, DNS_NAME)
+        core_headers = ['Subject', 'From', 'To', 'Date', 'Message-ID']
+        for header in additional_headers_dict:
+            if header not in core_headers:
+                msg[header] = additional_headers_dict[header]
         try:
             server.sendmail(from_email, recipient_list, msg.as_string())
             num_sent += 1
