【问题标题】:Django send_mail DNS_NAME errorDjango send_mail DNS_NAME 错误
【发布时间】:2014-05-09 19:36:21
【问题描述】:

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

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

查看traceback后,导致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()})

【问题讨论】:

    标签: django smtp gmail


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      也尝试设置这些:

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

      【讨论】:

        猜你喜欢
        • 2012-03-14
        • 1970-01-01
        • 2015-11-12
        • 1970-01-01
        • 2011-02-09
        • 2017-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多