Python: Как я могу изменить поле «to» в сценарии smtp / MIME вместо добавления нового? - PullRequest
1 голос
/ 24 апреля 2011

Вот выдержка из кода, который я использую.Я перебираю часть, которая добавляет электронное письмо;Моя проблема не в том, чтобы изменить поле «в» в каждом цикле, а в добавлении данных «в».Очевидно, это вызывает некоторые проблемы, так как поле в конечном итоге становится все длиннее и длиннее.Я попытался msgRoot.del_param ('To') безрезультатно.Я даже попытался установить msgRoot ['To'] для ссылки на первый индекс списка, чтобы я мог просто изменить значение этого элемента списка (также не работает).

from email.MIMEMultipart import MIMEMultipart
msgRoot = MIMEMultipart('related')
msgRoot['To'] = 'email@email.com'

Ответы [ 2 ]

4 голосов
/ 24 апреля 2011

Вы можете использовать метод replace_header .

replace_header(_name, _value)

Заменить заголовок. Замените первый найденный в сообщении заголовок, который соответствует _name, сохраняя порядок заголовков и регистр имени поля. Если соответствующий заголовок не найден, возникает KeyError.

Новое в версии 2.2.2.

Например,

if msgRoot.has_key('to'):
    msgRoot.replace_header('to', someAdress)
else:
    msgRoot['to'] = 'email@email.com'
1 голос
/ 24 апреля 2011

Я просто делаю это:

del msgRoot["To"]
msgRoot["To"] = "email@email.com"

Моя доморощенная блог-платформа на http://www.royalbarrel.com/ хранит свои записи в блоге таким образом, используя сообщения Mime. Работает отлично. И если кто-то добавляет комментарий, я обновляю сообщение до MimeMultipart и получаю первую полезную нагрузку как фактическое сообщение в блоге, а последующие полезные нагрузки - комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...