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

1

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

from email.MIMEMultipart import MIMEMultipart
msgRoot = MIMEMultipart('related')
msgRoot['To'] = '[email protected]'
Теги:
loops
smtp
mime

2 ответа

3
Лучший ответ

Вы можете использовать метод 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 protected]'
  • 0
    Спасибо, что сработало отлично!
  • 0
    в Python 3.5 мне пришлось использовать if 'to' in message: потому что has_key устарел.
Показать ещё 1 комментарий
1

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

del msgRoot["To"]
msgRoot["To"] = "[email protected]"

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню