Django send_mail DNS_NAME错误

时间:2014-05-09 19:36:22

标签: django smtp gmail

尝试从联系表单发送电子邮件时,我的django应用程序出现了一个奇怪的错误。

在DEBUG中提交联系表单时出现了unicode错误。

查看回溯后,导致unicode错误的字符串是utils.py中函数CachedDnsName()中的DNS_NAME

该功能返回了笔记本电脑的名称,即“Portátil-HP”

我收到了unicode错误,但为什么会这样?

settings.py

# Email setup
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'myemail@gmail.com'
EMAIL_HOST_PASSWORD = 'mypass'
EMAIL_PORT = 587 

views.py

class Contactos(FormView):
  @staticmethod
  def get(request):
    return render(request, 'site/contactos.html', {'form': Formulario()})

  def post(self, request):
    form = Formulario(request.POST or None)
    if form.is_valid():
        # All validation rules pass
        # Process the data in form.cleaned_data
        name = form.cleaned_data['name']
        email = form.cleaned_data['email']
        message = form.cleaned_data['message']
        send_mail(name, message, EMAIL_HOST_USER, [EMAIL_HOST_USER], fail_silently=False)
        return render(request, 'site/contactos.html', {'form': Formulario()})
    else:
        return render(request, 'site/contactos.html', {'form': Formulario()})

2 个答案:

答案 0 :(得分:0)

尝试设置这些:

EMAIL_FROM = 'emailtosentfrom@gmail.com'
SERVER_EMAIL = 'emailtosenterrorsfrom@gmail.com'

答案 1 :(得分:0)

DNS_NAME应该是ascii(就像域名一样),您的á可能会破坏它。

据我所知,无法手动设置DNS_NAME(请参阅this ticket

唯一的解决方案可能是将笔记本电脑的名称更改为更简单的字符。