Сообщение об ошибке верное, но вводит в заблуждение. Менеджер контента по умолчанию (менеджер контекста - другое животное ...) предоставляет этот метод set_content
(подчеркните мой):
email.contentmanager.set_content(msg, <'str'>, subtype="plain", charset='utf-8' cte=None, disposition=None, filename=None, cid=None, params=None, headers=None)
email.contentmanager.set_content(msg, <'bytes'>, maintype, subtype, cte="base64", disposition=None, filename=None, cid=None, params=None, headers=None)
email.contentmanager.set_content(msg, <'EmailMessage'>, cte=None, disposition=None, filename=None, cid=None, params=None, headers=None)
email.contentmanager.set_content(msg, <'list'>, subtype='mixed', disposition=None, filename=None, cid=None, params=None, headers=None)
Добавление заголовков и полезных данных в msg:
Добавьте заголовок Content-Type со значением maintype / subtype.
Для str установите для основного типа MIME значение text и установите для подтипа значение subtype, если оно указано, или обычное значение, если это не так.
Для байтов используйте указанные основной тип и подтип или вызовите ошибку TypeError, если они не указаны .
...
Короче говоря, если вы хотите отправить простое текстовое сообщение, передайте простую (unicode) строку в set_content
: