Как отправить электронное письмо в Django? - PullRequest
0 голосов
/ 11 января 2012

Я работаю в компании, занимающейся продажей светодиодных игрушек на свет, и одним из аспектов этого является обработка запросов на поддержку.У меня есть сервер, на котором работают exim4 и DJango, и у меня работает электронная почта, поэтому, если пользователь отправит электронное письмо на адрес support@myhost.com, я смогу подобрать письмо и ответить.что-то более аккуратное, чтобы отслеживать цепочку писем для конкретного запроса поддержки.

Чтобы сделать это, я подумал о том, чтобы передать вывод моей электронной почты, используя правило в фильтре электронной почты моей поддержки:

pipe /usr/bin/email_to_django_script

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

Какой лучший способ сделать это?Будет ли сценарий, использующий curl -d , разумным вариантом или есть лучшие / менее запутанные способы?

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Вы можете направить вывод сервера электронной почты в команду управления .В качестве примера у меня есть файл /inquiries/management/commands/proc_email.py.У меня есть один Command класс, и метод handle() получает большую часть электронной почты из среды, а тело письма от STDIN:

from_email = strip_tags(os.environ.get('SENDER', None))
to_email = strip_tags(os.environ.get('RECIPIENT', None))
emailMessage = email.message_from_string(''.join(sys.stdin.readlines()))

Там есть другой код, но именно так я получаю важные сведения.Затем вы можете передать это в ваши объекты ORM и получить к нему доступ через веб-сайт в более позднее время.

Затем к нему обращаются через /path/to/project/manage.py proc_email.

В зависимости от вашего почтового сервера вы также можете использовать плюсовую адресацию, чтобы ответы возвращались на один и тот же адрес.Например, мои Reply-To заголовки установлены на inquiry+12345@whatever.com.Почтовый сервер (postfix) затем сбрасывает его в среду под EXTENSION.Если номер не указан, я просто создаю новый запрос, а не присоединяюсь к существующему.

1 голос
/ 11 января 2012

Не совсем чистое решение Django, но я бы порекомендовал взглянуть на Lamson Project .Это почтовый сервер, написанный на Python, который вы можете использовать для создания почтовых приложений, подобных тому, что вы описываете.Я также могу интегрироваться с Django ORM.http://lamsonproject.org/docs/hooking_into_django.html

...