Попытка отправить текстовое вложение в Python с помощью почтовой программы. Почему я получаю сообщение об ошибке «У объекта нет атрибута« кодировать »? - PullRequest
0 голосов
/ 01 октября 2019

У меня есть сценарий Python 3, который используется для создания отчета по электронной почте. Отчет представляет собой текстовый файл, прикрепленный к сообщению электронной почты. Когда скрипт пытается отправить сообщение электронной почты, я получаю следующую ошибку:

Traceback (последний вызов был последним): файл "./sample.py", строка 24, в sender.send (сообщение) Файл "/usr/local/lib/python3.7/site-packages/mailer-0.8.1-py3.7.egg/mailer.py", строка 124, в отправляемом файле "/ usr / local / lib / python3.7 / site-packages / mailer-0.8.1-py3.7.egg / mailer.py ", строка 161, в _send файле" /usr/local/lib/python3.7/site-packages/mailer-0.8. 1-py3.7.egg / mailer.py ", строка 244, в файле as_string" /usr/local/lib/python3.7/site-packages/mailer-0.8.1-py3.7.egg/mailer.py", строка 349, в файле _multipart" /usr/local/lib/python3.7/site-packages/mailer-0.8.1-py3.7.egg/mailer.py ", строка 375, в файле _add_attachment" / usr/local/lib/python3.7/email/mime/text.py ", строка 34, в init _text.encode ('us-ascii')) AttributeError: объект 'bytes' не имеет атрибута 'закодировать'

Код, который я использую: ...

#!/usr/local/bin/python3.7

import mailer   # Used to send email

mail_to = "Me@here.com"
mail_from = "AlsoMe@here.com"
mail_subject = "Attachment test"
mail_attachment = "text.txt"

f = open(mail_attachment,"w")

f.write("This is a test.\n")
f.write("This is only a test.\n")

f.close()

message = mailer.Message(From = mail_from,
                         To = mail_to,
                         Subject = mail_subject)
message.Body = "This is a test of a text email attachment."
message.attach(mail_attachment)

sender = mailer.Mailer('127.0.0.1')
sender.send(message)

Почему я вижу эту ошибку и как ее обойти?

: edit: Если я использую имя файла "text.jpg", вложение отправляется, хотя и с неправильным расширением файла.

...