Форум сайта python.su
В общем проблема следующая: в проекте использую функцию 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)
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
Офлайн
Не лучший вариант но если нечего другого не останется:
Поставь на хост с django сниффер и смотри что идет при отправке сообщения какие заголовки тело…
М.б заголовки не правильно составлены.
Офлайн