2017-02-27 18 views
-1

在阅读Django网站上的文档后,我对如何使用我的Djagno应用程序配置SMTP后端有点困惑。我有一台本地交换服务器,它运行的是使用Outlook作为客户端的业务域business.com。如何配置设置以便我使用公司电子邮件(本地交换机)在设置中发送电子邮件?使用Django SMTP

感谢您的帮助!

编辑:

这里是连接错误:

email.send() 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\mail\message.py", line 342, in send 
    return self.get_connection(fail_silently).send_messages([self]) 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\mail\backends\smtp.py", line 100, in send_messages 
    new_conn_created = self.open() 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\mail\backends\smtp.py", line 58, in open 
    self.connection = connection_class(self.host, self.port, **connection_params) 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\smtplib.py", line 251, in __init__ 
    (code, msg) = self.connect(host, port) 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\smtplib.py", line 335, in connect 
    self.sock = self._get_socket(host, port, self.timeout) 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\smtplib.py", line 306, in _get_socket 
    self.source_address) 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\socket.py", line 711, in create_connection 
    raise err 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\socket.py", line 702, in create_connection 
    sock.connect(sa) 
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it 

这里是我的代码:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'business.com' 
EMAIL_PORT = '25' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'password' 

回答

3
  1. 提高到您的SMTP服务团队的请求,以允许使用有效的发件人电子邮件ID从您的IP /域名发送电子邮件。
  2. 获得批准后,从smtp服务团队获取EMAIL_HOST和EMAIL_PORT的详细信息。并把它添加到settings.py中,如下图所示:

    EMAIL_USE_TLS = True 
    EMAIL_HOST = 'business.com' 
    EMAIL_PORT = '25' #or 587 or any others 
    EMAIL_HOST_USER = '[email protected]' #Same as the sender email id 
    EMAIL_HOST_PASSWORD = 'yourpassword' #For exchange server pwd is not required 
    
  3. 运行交互模式:

    python manage.py shell 
    
  4. 导入EmailMessage模块:

    from django.core.mail import EmailMessage 
    
  5. 现在尝试发送电子邮件在以下代码的帮助下:

    email = EmailMessage('Subject', 'Body', to=['[email protected]']) 
    email.send() 
    
+0

谢谢你的帮助。两个问题,为什么我们使用TLS over SSL,并且我将不得不为Django制作邮箱才能使用,更正? – GreenSaber

+0

1. TLS用于端口587,SSL用于465.两者都用于安全连接到SMTP服务器。对于ref:https://docs.djangoproject.com/en/1.10/ref/settings/ 2.是的,你必须创建一个特定于你的项目的邮箱/分发列表,并在提出SMTP请求时给予同样的内容。 –

+0

我试图在shell中发送电子邮件,但是我得到WinError 100061,目标机器主动拒绝连接。我不知道为什么会发生这种情况,因为我在我的电子邮件和应用程序邮箱之间手动发送了电子邮件。 – GreenSaber