Рассмотрим Python 3 SMTPD - полученные данные содержатся в строке. http://docs.python.org/3.4/library/smtpd.html quote: "и данные - это строка, содержащая содержимое электронной почты"
Факты (исправить?):
- Строки в Python 3 являются Unicode.
- Письма всегда ASCII.
- Pure ASCII действителен Unicode.
Поэтому электронное письмо, которое входит в систему, является чистым ASCII (который является действительным Unicode), поэтому строка SMTPD DATA в точности эквивалентна исходным байтам, полученным SMPTD. Правильно ли это?
Таким образом, мой вопрос: если я декодирую строку SMTPD DATA в ASCII или преобразую строку DATA в байты, это эквивалентно байтам фактического сообщения электронной почты, которое поступает через SMTP?
Контекст (и, возможно, лучший вопрос): "Как сохранить файл Python 3 SMTPD DATA как ТОЧНО получаемые байты?" Я обеспокоен тем, что, когда DATA переходит через преобразование строки в байты, он каким-то образом был изменен с исходных байтов, которые поступают через SMTP.
EDIT: кажется, разработчики Python считают, что SMTPD должен в любом случае возвращать двоичные данные. Кажется, что не было исправлено... http://bugs.python.org/issue19662