Add "Received:" header to email msg in correct position?
Tim Chase
python.list at tim.thechases.com
Mon May 5 17:09:30 EDT 2014
On 2014-05-05 20:58, Grant Edwards wrote:
> On 2014-05-05, Ethan Furman <ethan at stoneleaf.us> wrote:
> > On 05/05/2014 12:51 PM, Grant Edwards wrote:
> >> I'd like to do the polite thing and add a "Received:" header,
> >> but I can't figure out how to get Python's email module to add
> >> it in the correct place. It always ends up at the "bottom" of
> >> the headers below From: To: etc. It's supposed to go at the
> >> above all the Received: headers that where there when I received
> >> it.
> >
> > I don't know that it matters, but which Python version?
>
> Sorry, should have mentioned it: 2.7.5
Looking at the stdlib source, it doesn't look like there's an easy
way to specify where it gets inserted. However, the source to
email.message.Message.add_header() is all of 9 lines of code, so it
wouldn't be too hard to subclass Message and twiddle self._headers as
you would any other list (i.e., using .insert() to specify an index).
It might look something like
class MyMessage(email.message.Message):
def insert_header(self, index, _name, _value, **_params):
parts = []
for k, v in _params.items():
if v is None:
parts.append(k.replace('_', '-'))
else:
parts.append(_formatparam(k.replace('_', '-'), v))
if _value is not None:
parts.insert(0, _value)
self._headers.insert(index, (_name, SEMISPACE.join(parts)))
You might still need to search for *where* you want to insert it, but
I'll leave that as an exercise to the reader. :-)
-tkc
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-list/attachments/20140505/5fb9aae3/attachment.sig>
More information about the Python-list
mailing list