Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 22, 2017 07:27:31

kiso
Зарегистрирован: 2017-01-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка 'ascii' codec can't encode characters

 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!'

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


Офлайн

#2 Янв. 22, 2017 08:19:50

wi34rd
Зарегистрирован: 2016-10-08
Сообщения: 89
Репутация: +  2  -
Профиль   Отправить e-mail  

Ошибка 'ascii' codec can't encode characters

 msg = MIMEText(msg.encode('utf-8'), 'plain', 'utf-8')
http://wordeology.com/computer/how-to-send-good-unicode-email-with-python.html

Офлайн

#3 Янв. 31, 2017 03:06:39

kiso
Зарегистрирован: 2017-01-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка 'ascii' codec can't encode characters

[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

Офлайн

#4 Янв. 31, 2017 09:45:07

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2681
Репутация: +  182  -
Профиль   Отправить e-mail  

Ошибка 'ascii' codec can't encode characters

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

Тебе же написали:

Content-Transfer-Encoding: base64
Вот и декодируй его:
 >>> import base64
>>> base64.decodestring("cHJvdmVyOgoKIHJwaXNoaSBkYW5ueSBwbyBzb290IAoKYnll")
'prover:\n\n rpishi danny po soot \n\nbye'



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Янв. 31, 2017 09:55:28

kiso
Зарегистрирован: 2017-01-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка 'ascii' codec can't encode characters

Rodegast
> Письмо приходит вот такое, что-то с кодировкой.Тебе же написали:
Спасибо.

Но пользователь которому я отправляю это письмо, не сможет это декодировать.
Нужно чтобы отправлялось в кириллице

Офлайн

#6 Янв. 31, 2017 10:25:26

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2584
Репутация: +  60  -
Профиль   Отправить e-mail  

Ошибка 'ascii' codec can't encode characters

 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)



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#7 Фев. 3, 2017 10:11:14

qv_cleric
Зарегистрирован: 2017-02-03
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка 'ascii' codec can't encode characters

Здравствуйте!
У меня подобная проблема, в IDLE все отлично работает, но как только запускаю программу двойным кликом, секунда и окно тухнет
вот еле успел скрин сделать

Прикреплённый файлы:
attachment Безымянный.png (141,4 KБ)

Офлайн

#8 Фев. 4, 2017 10:54:59

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2584
Репутация: +  60  -
Профиль   Отправить e-mail  

Ошибка 'ascii' codec can't encode characters

Я же написал рабочий код! в чем апроблема то?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version