Найти - Пользователи
Полная версия: Ошибка 'ascii' codec can't encode characters
Начало » Python для новичков » Ошибка 'ascii' codec can't encode characters
1
kiso
 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!'

Что нужно чтобы русские символы нормально передавались и отображались?


wi34rd
 msg = MIMEText(msg.encode('utf-8'), 'plain', 'utf-8')
http://wordeology.com/computer/how-to-send-good-unicode-email-with-python.html
kiso
[code python]import smtplib
import sys
from email.mime.text import MIMEText

# Параметр, передаваемый при запуске скрипта:
#txtparam = sys.argv[1]
# От кого:
fromaddr = 'robot trudvsem <robot_trudvsem@mail.ru>'
# Кому:
toaddr = 'trudvsem <rax@mail.ru>'
# Тема письма:
subj = 'trudvsem'
# Текст сообщения:
#msg_txt = 'Внимание!:\n\n ' + "Проверьте админку сайта . " + '\n\nР74!'
msg_txt = 'prover:\n\n ' + "rpishi danny po soot " + '\n\nbye'

msg_txt = MIMEText(msg_txt.encode('utf-8'), 'plain', 'utf-8')

# Создаем письмо (заголовки и текст)
msg = "From: %s\nTo: %s\nSubject: %s\n\n%s" % (fromaddr, toaddr, subj, msg_txt)

# Логин gmail аккаунта. Пишем только имя ящика.
# Например, если почтовый ящик someaccount@gmail.com, пишем:
username = 'robot_m@mail.ru'
# Соответственно, пароль от ящика:
password = 'qwer23!'

# Инициализируем соединение с сервером gmail по протоколу smtp.
server = smtplib.SMTP_SSL('smtp.mail.ru:465')
# Выводим на консоль лог работы с сервером (для отладки)
server.set_debuglevel(1);
# Переводим соединение в защищенный режим (Transport Layer Security)
#server.starttls()
# Проводим авторизацию:
server.login(username, password)
# Отправляем письмо:
server.sendmail(fromaddr, toaddr, msg)
# Закрываем соединение с сервером
server.quit()
[/code]

Письмо приходит вот такое, что-то с кодировкой.

Content-Type: text/plain; charset=“utf-8”
MIME-Version: 1.0
Content-Transfer-Encoding: base64

cHJvdmVyOgoKIHJwaXNoaSBkYW5ueSBwbyBzb290IAoKYnll
Rodegast
> Письмо приходит вот такое, что-то с кодировкой.

Тебе же написали:
Content-Transfer-Encoding: base64
Вот и декодируй его:
 >>> import base64
>>> base64.decodestring("cHJvdmVyOgoKIHJwaXNoaSBkYW5ueSBwbyBzb290IAoKYnll")
'prover:\n\n rpishi danny po soot \n\nbye'
kiso
Rodegast
> Письмо приходит вот такое, что-то с кодировкой.Тебе же написали:
Спасибо.

Но пользователь которому я отправляю это письмо, не сможет это декодировать.
Нужно чтобы отправлялось в кириллице
ZerG
 msg = MIMEMultipart()
msg['To'] = toaddr
msg['From'] = fromaddr
msg['Subject'] = "Добро пожаловать в реальный мир"
msg.attach(MIMEText(body, 'html', _charset='utf-8'))
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
qv_cleric
Здравствуйте!
У меня подобная проблема, в IDLE все отлично работает, но как только запускаю программу двойным кликом, секунда и окно тухнет
вот еле успел скрин сделать
ZerG
Я же написал рабочий код! в чем апроблема то?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB