我正在使用Django开发一个网站,我目前正致力于整个身份验证设置,特别是用户可以使用密码重置表单的部分,该表单发送带有链接的一次性电子邮件用于重置密码。但是,如果我尝试使用' localhost' (目前我自己的个人机器)发送电子邮件,Django附带的网络服务器崩溃了:
ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝它
我做了一些调查并发现要发送电子邮件,我需要连接SMTP服务器,而我的机器显然不是SMTP服务器。至少,通常不是。现在,我想指出两件事:
我知道我可以使用Gmail的SMTP服务器,事实上,我在另一个程序中有代码。但是,我更愿意使用' localhost'如果可能的话。如果我不能,那么我只是创建另一个Gmail帐户并使用它。
我知道Django提供了几个电子邮件后端,事实上,我现在已经实现了基于文件的后端。这足以测试提供的链接并验证它们是否有效,但我希望看到电子邮件的实际外观,电子邮件模板中包含任何格式。
所以,我该如何转变本地主机'进入一个SMTP服务器,Django会接受哪一个?或者,如果我不能,那么请告诉我,我将采取另一种设置另一个Gmail帐户的方式来使用。
答案 0 :(得分:2)
为了能够帮助任何有同样问题的人并遇到这个问题,我将分享我选择的路径。
您可以在sendgrid或mailgun上创建免费帐户,并从那里发送测试电子邮件。
我看了一下sendgrid,但他们需要一个网站,而我还没有(因为我在我的机器上本地运行网站)。 mailgun更有用,它们甚至提供了用于各种语言的代码片段。但是,由于我目前正在使用Django的内置视图,因此我没有使用他们提供的代码片段。相反,在我的settings.py
文件中,我设置了以下内容:
EMAIL_HOST = 'smtp.mailgun.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'postmaster@sandbox[sandboxID].mailgun.org'
EMAIL_HOST_PASSWORD = '[Default Password]'
sandboxID
和Default Password
可以通过转到https://mailgun.com/cp/domains/
找到,然后按照指向页面的链接找到已分配给您的沙箱。
我测试了这段代码,效果很好!
重要提示:显然,您似乎必须在浏览器页面中打开邮件控制面板才能从沙箱中发送邮件。关闭该标签后,我没有收到任何邮件,当我打开它时,它就会弹出我的Gmail收件箱。