On 2014-05-05 20:58, Grant Edwards wrote:
> On 2014-05-05, Ethan Furman <et...@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





Attachment: signature.asc
Description: PGP signature

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to