On Thu, 27 Aug 2009 at 17:42, Mark Sapiro wrote:
Nicholas Cole wrote:

What do I need to do to ensure that emails are generated only in 7,
not 8-bit encodings?  I assume that I need to use
email.charset.add_charset , but can't quite work out what incantation
to give it.  Does anyone have any pointers?


I'm not sure what it is you're asking. Does this answer your question?

import email.message
m = email.message.Message()
m.set_payload("""A few lines
... of 7-bit text
...
... No high bit characters.
... """, 'us-ascii')
print m.as_string()
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

A few lines
of 7-bit text

No high bit characters.



It probably doesn't, since if that message contains high range
characters it will result in an encoding of 8bit:

import email.message
m = email.message.Message()
m.set_payload("""A few lines
... of 8-bit text
...
... One high bit character: ??.
... """, 'us-ascii')
print m.as_string()
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 8bit

A few lines
of 8-bit text

One high bit character: ??.



Since 8bit isn't technically us-ascii, I wonder if this is a bug.

With a little experiement and a look at the code, it appears that you
will get 7bit clean output as long as you always provide a charset
for the input other than us-ascii that the charset module has been
told should be encoded using QP or BASE64 (which is true for
all of the already registered charsets).

EG: this results in 7bit clean output:

i>>> import email.message
m = email.message.Message()
m.set_payload("""A few lines
... of 8-bit text
...
... One high bit character: ??.
... """, 'latin-1')
print m.as_string()
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

A few lines
of 8-bit text

One high bit character: =C2=B2.



I suspect this is not a complete answer to the question...

--David
_______________________________________________
Email-SIG mailing list
Email-SIG@python.org
Your options: 
http://mail.python.org/mailman/options/email-sig/archive%40mail-archive.com

Reply via email to