Purpose: It is necessary to send a letter in the mail. The letter has Cyrillic characters.
Problem: the script works with Latin characters, but does not work in Cyrillic
Script:
import smtplib TEXT = "Кириллица \n"\ "Кириллица\n" TO = 'xxxxxx@gmail.com' SUBJECT = 'xxxx' # Gmail Sign In gmail_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() Mistake:
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) As far as I understand the problem in the encoding. Is the smtplib module works only with ANSII ??