对于使用Django开发网站,我如何使用';本地主机';作为一个正常运行的SMTP服务器?

对于使用Django开发网站,我如何使用';本地主机';作为一个正常运行的SMTP服务器?,django,email,Django,Email,我正在用Django开发一个网站,目前我正在进行整个身份验证设置,特别是用户可以使用密码重置表单发送一封带有用于重置密码的链接的一次性电子邮件的部分。但是,如果我尝试使用“localhost”(当前为我自己的个人计算机)发送电子邮件,Django附带的web服务器会崩溃,并显示以下消息: ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了它 我做了一些研究,发现要发送电子邮件,我需要连接SMTP服务器,而我的机器显然不是SMTP服

我正在用Django开发一个网站,目前我正在进行整个身份验证设置,特别是用户可以使用密码重置表单发送一封带有用于重置密码的链接的一次性电子邮件的部分。但是,如果我尝试使用“localhost”(当前为我自己的个人计算机)发送电子邮件,Django附带的web服务器会崩溃,并显示以下消息:

ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了它

我做了一些研究,发现要发送电子邮件,我需要连接SMTP服务器,而我的机器显然不是SMTP服务器。至少,通常不会。现在,我想指出两件事:

  • 我知道我可以使用Gmail的SMTP服务器,事实上,我在另一个程序中有这样做的代码。但是,如果可能的话,我更愿意使用“localhost”。如果我不能,那么我就创建另一个Gmail帐户并使用它

  • 我知道Django提供了几个电子邮件后端,事实上,我现在已经实现了基于文件的后端。这足以测试提供的链接并验证它们是否有效,但我想看看电子邮件的实际外观,以及电子邮件模板中包含的任何格式


  • 那么,我如何才能将“localhost”变成一个SMTP服务器,Django会接受它呢?或者,如果我不能,请告诉我,我将采取另一种途径,建立另一个Gmail帐户来使用。

    为了可能帮助任何有同样问题和遇到这个问题的人,我将分享我选择的道路

    根据,


    您可以在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]'
    
    进入
    https://mailgun.com/cp/domains/
    ,然后按照链接转到已分配给您的沙箱页面

    我测试了这段代码,效果非常好


    重要提示:显然,为了从沙箱发送邮件,您必须在浏览器页面中打开mailgun控制面板。关闭该选项卡后,我没有收到任何邮件,当我打开它的时候,它就出现在我的Gmail收件箱中。

    “Django附带的web服务器”-->1)您可以控制特定的机器吗?2) 您是否在该特定机器上安装/配置了mailserver?1)我正在使用自己的机器进行开发和测试,但我确实计划在将来的某个时候将其部署到另一台机器上。所以,是的,我有控制权。2) 我很确定我没有。@admdrew:谢谢你的链接。是的,我以前从未设置过邮件服务器,但现在正是学习如何设置的好时机!:)您可以在sendgrid或mailgun上创建一个免费帐户,然后从那里发送测试电子邮件。对我来说,创建一个G帐户,通过短信电话验证等方式进行验证似乎比创建一个G帐户更容易。从您的本地开发人员机器发送电子邮件很困难:许多ISP会阻止SMTP端口上的传出连接,如果不阻止,您的电子邮件肯定会被拒绝为垃圾邮件。@Tiago:非常感谢您建议使用mailgun!这对我来说太好了!:)很高兴能为您提供帮助,感谢您花时间写下您最终完成的工作。