import smtplib import sys # Параметр, передаваемый при запуске скрипта: #txtparam = sys.argv[1] # От кого: fromaddr = 'Mr. Robot <rob@yandex.ru>' # Кому: toaddr = 'Administrator <ra@mail.ru>' # Тема письма: subj = 'server rebot' # Текст сообщения: msg_txt = 'Notice:\n\n ' + "текст по русски" + '\n\nBye!' # # Создаем письмо (заголовки и текст) msg = "From: %s\nTo: %s\nSubject: %s\n\n%s" % (fromaddr, toaddr, subj, msg_txt) # Логин gmail аккаунта. Пишем только имя ящика. # Например, если почтовый ящик someaccount@gmail.com, пишем: username = 'rob' # Соответственно, пароль от ящика: password = 'qq' # Инициализируем соединение с сервером gmail по протоколу smtp. server = smtplib.SMTP('smtp.yandex.ru:25') # Выводим на консоль лог работы с сервером (для отладки) server.set_debuglevel(1); # Переводим соединение в защищенный режим (Transport Layer Security) server.starttls() # Проводим авторизацию: server.login(username, password) # Отправляем письмо: server.sendmail(fromaddr, toaddr, msg) # Закрываем соединение с сервером server.quit()
Здравствуйте
Если вкладываю русский текст в тело письма то выдает ошибку
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 113-121: ordinal not in range(128)
Если указываю # Создаем письмо (заголовки и текст)
msg = “From: %s\nTo: %s\nSubject: %s\n\n%s” % (fromaddr, toaddr, subj, msg_txt.encode('utf-8'))
то в письме приходит b'Notice:\n\n \xd0\xb0\xd0\xb2\xd0\xbf\xd0\xb2\xd0\xb0\xd0\xbf\xd0\xb2\xd0\xb0\xd0\xbf\n\nBye!'
Что нужно чтобы русские символы нормально передавались и отображались?