Бэкэнд электронной почты Django (продолжает отправлять электронную почту от неправильного «отправителя») - PullRequest
6 голосов
/ 09 мая 2011

У меня есть несколько экземпляров в моем проекте, где я пытаюсь отправить электронное письмо в представлении Django.

Я хочу иметь возможность жестко закодировать отправителя электронной почты в представлении.Однако, когда я пытаюсь это сделать, он продолжает отправлять электронные письма из учетной записи по умолчанию, указанной в моем файле настроек.

Вот пример:

        if testform.is_valid():
            beta=testform.save()
            subject="Hi Beta Tester"  
            sender="correct@email.com"

            recipient=[testform.cleaned_data['email']]

            text=loader.get_template('registration/beta_email.txt')
            html=loader.get_template('registration/beta_email.html')

            site_name='mysite'
            d=Context({'site_name':site_name})
            text_content=text.render(d)
            html_content=html.render(d)
                #This sends two mail versions, plain text and html
            msg=EmailMultiAlternatives(subject, text_content, sender, recipient)
            msg.attach_alternative(html_content, "text/html")
            msg.send()

            return HttpResponseRedirect('/splash/')

Я подумал, что могу отправить явно указать аргумент отправителя.И все же, когда я проверяю его, электронное письмо отправляется с адреса, указанного в моем файле настроек, настроенного следующим образом:

       EMAIL_USE_TLS=True

       EMAIL_HOST='smtp.gmail.com'

       EMAIL_HOST_USER='wrong@email.com'

       EMAIL_HOST_PASSWORD='private'

       DEFAULT_FROM_EMAIL='wrong@email.com'

Нужно ли просто удалить константу DEFAULT_FROM_EMAIL, чтобы она работала?Я пытался сделать это, и, кажется, работает, но я в замешательстве.В документации Django предлагается, чтобы установка отправителя в представлении переопределяла DEFAULT.

Ответы [ 2 ]

7 голосов
/ 10 мая 2011

Я наконец понял проблему здесь.К сожалению, gmail переписывает from и конверт на аутентифицированном smtp.

Если вы хотите обойти это, вам нужно использовать сторонний почтовый сервер (который не действует как подобный элемент), а затем отправлять почту пользователям gmail.

2 голосов
/ 10 мая 2011

Для электронного письма отправителя попробуйте ввести его в <>, и вы можете добавить имя:

sender = "Formal Name <correct@email.com>"

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

На самом деле не должно быть причины, по которой добавление к нему имени изменит способ его отправки, но, возможно, стоит попробовать, и, возможно, вам все равно понадобится легко читаемое имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...