Я попытался сохранить письмо с символами Cyrilli c в файл TXT. Электронное письмо также создается автоматически. Вот полный код функции:
def send_and_archive_email(self):
#connect to mailbox
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.ehlo()
smtpObj.starttls()
login = input('Please, enter your login: ')
password = input('Please, enter you password: ')
smtpObj.login(login, password)
header, body = self.draft_email() # return tuple of strings with Cyrillic characters
msg = MIMEMultipart()
msg['Subject'] = header
msg['From'] = **********
msg['To'] = *********
msg.attach(MIMEText(body, 'plain', 'utf-8'))
for name in self.cioms_names:
with open(self.folder/name, "rb") as fil:
part = MIMEApplication(
fil.read(),
Name=name
)
part['Content-Disposition'] = 'attachment; filename={}'.format(name)
msg.attach(part)
smtpObj.sendmail(msg['From'], msg['To'], msg.as_string())
smtpObj.quit()
#archive email and delivery confirmation
connection = self.connect_to_email('"[Gmail]/Sent Mail"')
search_criteria = **************
email_id = self.search_emails('SUBJECT', search_criteria, connection)
typ, message = connection.fetch(email_id[0], '(RFC822)')
raw = email.message_from_bytes(message[0][1])
for part in raw.walk():
if part.get_content_maintype() == 'multipart':
continue
if part.get_content_maintype() == 'text':
filepath = self.folder/"test_save.txt"
with codecs.open(filepath, 'wb', encoding='utf-8') as file:
body = u'' + part.get_payload()
file.write(body)
Текст сохраняется в файл в странном формате. Я знаю, что это проблема с кодировкой, и пробовал некоторые популярные, такие как utf-8, windows -1251, но проблема не решена. Мы будем очень благодарны за любые мысли или предложения.