Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 9, 2013 22:06:32

carter85
Зарегистрирован: 2013-10-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

smtp отправка письма (кодировка)

Всем привет.
Вообщем потратил на решение своей проблемы уже два жня, не смог разобраться.
Вообщем отправляю письмо скриптом, а на почту приходят каракули в теле письма
python 2.7

from email.mime.text import MIMEText
         msg_txt = MIMEText("русский текст", 'plain', "utf-8")
отвеь такой
Content-Type: text/plain; charset=“utf-8”
MIME-Version: 1.0
Content-Transfer-Encoding: base64

Может кто нибудь поможет.

Офлайн

#2 Окт. 9, 2013 22:17:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

smtp отправка письма (кодировка)

PEP 263, соблюдены требования?



Офлайн

#3 Окт. 10, 2013 09:40:47

carter85
Зарегистрирован: 2013-10-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

smtp отправка письма (кодировка)

ДА
Вот весь код функции

#!/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()

Офлайн

#4 Окт. 10, 2013 14:56:29

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

smtp отправка письма (кодировка)

У тебя после subject вставляется два перевода строки, соответственно далее все считается текстом письма и не декодируется при приеме. Сообщение надо строить так:

        msg = MIMEText("текст письма", 'plain', "utf-8")
        msg["Subject"] = subj
        msg["From"] = fromaddr
        msg["To"] = toaddr



Офлайн

#5 Окт. 11, 2013 16:23:15

carter85
Зарегистрирован: 2013-10-09
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

smtp отправка письма (кодировка)

agalen
У тебя после subject вставляется два перевода строки, соответственно далее все считается текстом письма и не декодируется при приеме. Сообщение надо строить так:
а что это за синтаксис такой?
msg["Subject"]
? пробовал использовать в обычном интерпретаторе питона, выходит ошибка.

Отредактировано carter85 (Окт. 11, 2013 16:23:31)

Офлайн

#6 Окт. 11, 2013 20:45:17

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

smtp отправка письма (кодировка)

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)

Офлайн

#7 Окт. 15, 2013 13:08:47

alrusdi
Зарегистрирован: 2013-09-30
Сообщения: 20
Репутация: +  8  -
Профиль   Отправить e-mail  

smtp отправка письма (кодировка)

В python < 3 нужно же еще юникодные строки специально обозначать

msg_txt = MIMEText(u"русский текст", 'plain', "utf-8")
?

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version