Django: Как отправить письмо, соответствующее RFC 822? (пользователи не могут ответить из-за пробелов) - PullRequest
0 голосов
/ 29 августа 2018

Пользователь недавно уведомил меня, что он не может отвечать на мои сообщения электронной почты из-за пробелов в адресе. Он также упомянул, что необработанное поле FROM не соответствует RFC 822 - я мало что знаю об этом и не могу проверить.

Вот необработанное поле From, которое он получил:

From: SiteName someprefix@mg.somesite.io

Так я сейчас отправляю эти письма:

msg_plain = render_to_string('email_template.txt', context)
                msg_html = render_to_string('email_template.html', context)

                EMAIL_FROM_FIELD = 'SiteName someprefix@mg.somesite.io'

                mail_was_sent = send_mail(
                    email_subject,
                    msg_plain,
                    EMAIL_FROM_FIELD,
                    [profile.user.email],
                    html_message=msg_html,
                )

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вы можете определить поле формы следующим образом:

EMAIL_FROM_FIELD = 'SiteName <someprefix@mg.somesite.io>'
0 голосов
/ 29 августа 2018

Если я что-то упустил, думаю, вам нужно изменить это:

EMAIL_FROM_FIELD = 'SiteName someprefix@mg.somesite.io'

К этому:

EMAIL_FROM_FIELD = 'SiteName <someprefix@mg.somesite.io>'

Общее правило заключается в том, что там, где может присутствовать линейно-пробел (НЕ просто LWSP-символы), вместо этого может быть вставлен CRLF, за которым сразу же по крайней мере следует один LWSP-символ.

Это от: https://www.w3.org/Protocols/rfc822/

...