HeaderParseError в форме электронной почты django - PullRequest
0 голосов
/ 31 августа 2018

При тестировании моего почтового приложения я получаю следующую ошибку:

HeaderParseError at / contact / Ожидаемый «атом» или «строка в кавычках», но найденный «@»

Мне удалось отследить ошибку до нескольких переменных, содержащих только «@», включая «получателей», но мне трудно найти исправление. Я подозреваю, что это происходит из очищенных данных, но даже при использовании только объекта POST возвращалась та же ошибка. Заранее спасибо! Вот код:

def contact(request):
if request.method == 'POST':
    form = ContactForm(request.POST)
    if form.is_valid():
        subject = form.cleaned_data['subject']
        message = form.cleaned_data['message']
        from_email = form.cleaned_data['email']
        recipient_list = list(str('xxxxx@gmail.com'))
        # recipient_list.append(from_email)

        ''' Begin reCAPTCHA validation '''
        recaptcha_response = request.POST.get('g-recaptcha-response')
        data = {
            'secret': settings.RECAPTCHA_PRIVATE_KEY,
            'response': recaptcha_response
        }
        r = requests.post('https://www.google.com/recaptcha/api/siteverify', data=data)
        result = r.json()
        ''' End reCAPTCHA validation '''

        email = EmailMessage(subject, message, str(from_email), recipient_list)
        email.send()
        if result['success']:
            messages.success(request, 'New comment added with success!')
        else:
            messages.error(request, 'Invalid reCAPTCHA. Please try again.')
        return HttpResponseRedirect('/contact')
    else:
        data = form.cleaned_data
        form = ContactForm(data, initial=data)
        messages.error(request, 'Please correct the errors on the form below.')

else:

    form = ContactForm()
return render(request, 'contact.html', {'form': form})

1 Ответ

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

Проблема с этой строкой в ​​вашем коде:

recipient_list = list(str('xxxxx@gmail.com'))

Если вы запустите это в своей консоли, вы получите следующий вывод:

['x', 'x', 'x', 'x', 'x', '@', 'g', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm']

Который не является списком действительных адресов электронной почты! Вам нужно сделать это вместо:

recipient_list = ['xxxxx@gmail.com']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...