Уведомления

Группа в Telegram: @pythonsu

#1 Июль 20, 2013 15:03:43

sliv
От: Москва
Зарегистрирован: 2013-06-03
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

И снова проблема с кодировкой.

В общем проблема следующая: в проекте использую функцию send_mail(). Все доходит, тема приходит верно, а вот с текстом письма проблемы. Если не декодировать принудительно в utf-8, то в теле письма получаем что-то подобное:

{'comment': u'\u0447\u0444\u044b\u0447\u0444\u044b\u0441', 'phone': u'\u0432\u0430\u043f\u0440\u043e', 'contact_time': u'\u0447\u0444\u044b\u0447\u0444\u044b', 'name': u'acccc', 'address': u'\u0441\u0444\u044b\u0447\u0441\u044b\u0444\u0447\u0444'}

Если значения, передаваемые в message (value в моем случае), предварительно обработать unicode() или encode('utf-8'), тогда имеем:

{'comment': '\xd0\xbf\xd0\xb2\xd0\xb0\xd0\xb2\xd0\xbf', 'phone': '\xd0\xb0\xd0\xb2\xd0\xb2\xd0\xbf', 'contact_time': '\xd0\xb2\xd0\xbf\xd0\xb0\xd0\xb2\xd0\xbf', 'name': '\xd0\xb2\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe', 'address': '\xd0\xbf\xd0\xb2\xd0\xb0\xd0\xbf\xd0\xb0\xd0\xbf'}

Понятное дело, что в случае использования английской раскладки все читабельно. Т.е., все что за пределами ascii (апострофы тоже страдают) приходит в виде кода.

Да, в переменную message я передаю поля вытащенные из формы:

class DefaultOrderForm(forms.Form):
    name = forms.CharField(label=_('Customer name'), max_length=100)
    phone = forms.CharField(label=_('Customer phone'), max_length=100)
    address = forms.CharField(label=_('Delivery address'), max_length=255)
    contact_time = forms.CharField(label=_('Convenient time to call'),
        max_length=50, required=False)
    comment = forms.CharField(label=_('Comment for us'), max_length=255,
        widget=forms.Textarea(), required=False)

Вот функция перебора входных данных из формы, которая прописывает все в файлик order.txt. В send-mail() просто его отправляю.

def comment_order(order, form_data):
    OrderForm = get_order_form()
    result = {}
    for field_name, value in form_data.iteritems():
        result.update({
            field_name: (value),
        })
    message = loader.render_to_string('basket/order.txt', {
        'order': order,
        'result': result,
    })
    return message

Наверняка кто-то сталкивался. Очень нужна Ваша помощь.

Офлайн

#2 Июль 22, 2013 21:09:28

mironich
От:
Зарегистрирован: 2011-05-23
Сообщения: 118
Репутация: +  2  -
Профиль   Отправить e-mail  

И снова проблема с кодировкой.

Не лучший вариант но если нечего другого не останется:
Поставь на хост с django сниффер и смотри что идет при отправке сообщения какие заголовки тело…
М.б заголовки не правильно составлены.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version