Отправка email. Не отправляется письмо с кириллицей
📁 python, ошибка, python3, работа
Цель: Нужно отослать письмо на почту. В письме есть кириллические символы.
Проблема: скрипт работает с латинскими символами, но не работает с кириллицей
Скрипт:
import smtplibTEXT = ""Кириллица \n""\ ""Кириллица\n""TO = 'xxxxxx@gmail.com'SUBJECT = 'xxxx'# Gmail Sign Ingmail_sender = 'xxxx@gmail.com'gmail_passwd = 'xxxxxx'server = smtplib.SMTP('smtp.gmail.com', 587)server.ehlo()server.starttls()server.login(gmail_sender, gmail_passwd)BODY = '\r\n'.join(['To: %s' % TO, 'From: %s' % gmail_sender, 'Subject: %s' % SUBJECT, '', TEXT])try: server.sendmail(gmail_sender, [TO], BODY) print('email sent')except: print('error sending mail')server.quit()Ошибка:
Traceback (most recent call last): File ""C:/Users/babai/PycharmProjects/test/mail.py"", line 47, in <module> server.sendmail(gmail_sender, [TO], BODY) File ""C:\Program Files (x86)\Python36-32\lib\smtplib.py"", line 854, in sendmail msg = _fix_eols(msg).encode('ascii')UnicodeEncodeError: 'ascii' codec can't encode characters in position 63-74: ordinal not in range(128)На сколько я понимаю проблема в кодировке. Тоесть модуль smtplib работает только с ANSII ??
Проблема решена с помощю MIMEText
Решение найдено вот здесь
Спасибо
# -*- coding: utf-8 -*-""""""Send email via smtp_host.""""""import smtplibfrom email.mime.text import MIMETextfrom email.header import Headersmtp_host = 'smtp.gmail.com' # yahoologin = ""xxxxxx@gmail.com""password = ""xxxxxxx""recipients_emails = ""xxxxxx@gmail.com""msg = MIMEText('Спасибо', 'plain', 'utf-8')msg['Subject'] = Header('subject…', 'utf-8')msg['From'] = loginmsg['To'] = recipients_emailss = smtplib.SMTP(smtp_host, 587, timeout=10)s.set_debuglevel(1)try: s.starttls() s.login(login, password) s.sendmail(msg['From'], recipients_emails, msg.as_string())finally: print(msg) s.quit() Войдите чтобы оставить ответ