Форум сайта python.su
Всем привет.
Вообщем потратил на решение своей проблемы уже два жня, не смог разобраться.
Вообщем отправляю письмо скриптом, а на почту приходят каракули в теле письма
python 2.7
from email.mime.text import MIMEText msg_txt = MIMEText("русский текст", 'plain', "utf-8")
Офлайн
PEP 263, соблюдены требования?
Офлайн
ДА
Вот весь код функции
#!/usr/bin/python # -*- coding: utf-8 -*- import smtplib import sys import codecs import email.mime.text from email.mime.text import MIMEText def mail(txtparam): fromaddr = 'FROM <it@from.com>' toaddr = 'Administrator <to@mail.ru>' subj = "тема письма" msg_txt = txtparam msg_txt = MIMEText("текст письма", 'plain', "utf-8") msg = "From: %s\nTo: %s\nSubject: %s\n\n%s" % ( fromaddr, toaddr, subj, msg_txt) server = smtplib.SMTP("mail.gol.ru:25') server.sendmail(fromaddr, toaddr, msg) server.quit()
Офлайн
У тебя после subject вставляется два перевода строки, соответственно далее все считается текстом письма и не декодируется при приеме. Сообщение надо строить так:
msg = MIMEText("текст письма", 'plain', "utf-8") msg["Subject"] = subj msg["From"] = fromaddr msg["To"] = toaddr
Офлайн
agalenа что это за синтаксис такой?
У тебя после subject вставляется два перевода строки, соответственно далее все считается текстом письма и не декодируется при приеме. Сообщение надо строить так:
msg["Subject"]
Отредактировано carter85 (Окт. 11, 2013 16:23:31)
Офлайн
carter85
а что это за синтаксис такой?
msg
>>> d = {} >>> d['1'] = 1 >>> d['1'] 1 >>> d.__getitem__('1') 1 >>> help(d.__getitem__) Help on built-in function __getitem__: __getitem__(...) x.__getitem__(y) <==> x[y]
carter85
? пробовал использовать в обычном интерпретаторе питона, выходит ошибка.
Отредактировано Budulianin (Окт. 11, 2013 20:46:16)
Офлайн
В python < 3 нужно же еще юникодные строки специально обозначать
msg_txt = MIMEText(u"русский текст", 'plain', "utf-8")
Офлайн