Django SMTP [Errno 111]连接被拒绝

Django SMTP [Errno 111]连接被拒绝

问题描述:

我想从一个web应用程序使用django和sendgrid SMTP服务器发送电子邮件。它的工作原理局部精细,但当我尝试使用它pythonanywhere我得到Django SMTP [Errno 111]连接被拒绝

error: [Errno 111] Connection refused 

从相关视图中的代码是

def contact(request): 
    if request.method == 'POST': 
     form = EmailForm(request.POST) 

     if form.is_valid(): 
      mail = form.cleaned_data 

      send_mail(
       'Automated Enquiry', 
       'A user is interested in part ' + mail['part'] + '.Their message: ' + mail['msg'], 
       mail['email'], 
       ['[email protected]'], 
       fail_silently = False, 
      ) 

      return render(request, 'manager/error.html', {'msg': "Thanks, we will be in touch as soon as possible"}) 

    else: 
     part = request.GET.get('part', '') 
     form = EmailForm() 

    return render(request, 'manager/contact.html', {'form': form, 'part':part})  

在我setting.py:

EMAIL_HOST = 'smtp.sendgrid.net' 
EMAIL_HOST_USER = 'myuser' 
EMAIL_HOST_PASSWORD = 'mypassword' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 

它也没有从控制台工作。 任何帮助将不胜感激。

+0

尝试从控制台 – chakri

+0

我尝试远程登录smtp.sendgrid.net 587,并获得远程登录远程登录SMTP服务器:无法连接到远程主机:拒绝连接@ chakri – dwmyfriend

+0

我刚刚搜索了它,那就是问题所在,我应该在查询之前进行检查,非常感谢。 @chakri – dwmyfriend

PythonAnywhere上的免费用户限制了对网站的whitelist的Internet访问,并且只允许HTTP/HTTPS协议,因此您无法通过免费帐户与sendgrid建立SMTP连接。

你可以从一个免费帐户使用Gmail,而pythonanywhere有instructions here

,或者你可以切换到使用sandgrid HTTP API:https://sendgrid.com/docs/Integrate/Frameworks/django.html

+0

非常感谢,无论如何,我正计划升级到黑客帐户,这将解决这个问题吗? – dwmyfriend

+0

是的,它应该这样做。如果您需要任何帮助,请发送电子邮件至support @ – hwjp