Django使用gmail发送电子邮件SMTP仅适用于localhost(在DigitalOcean上失败)

时间:2016-10-13 21:51:32

标签: django smtp registration digital-ocean django-allauth

我使用Django allauth来管理我的用户注册。当用户创建电子邮件帐户时,他会收到确认电子邮件。如果电子邮件未得到确认,他将无法登录该网站。所有在localhost上运行良好(发送电子邮件,确认工作,如果用户在确认电子邮件之前尝试连接,则连接失败并显示相应的错误消息)。 但是当我在我的digitalocean服务器上尝试我的应用程序时,问题就出现了。即使未确认电子邮件,也不会发送邮件,用户也可以连接。我的Django电子邮件设置是:

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'your-username@gmail.com'
EMAIL_HOST_PASSWORD = 'your-password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

问题出在哪里?我认为这与我的digitalocean服务器有关,但我根本不确定。

修改

我尝试使用此链接https://accounts.google.com/b/0/DisplayUnlockCaptcha允许使用外部应用程序访问我的Google帐户,但它不会改变任何内容。

我尝试将SMTP端口更改为465,如此处所述:https://www.digitalocean.com/community/tutorials/how-to-use-google-s-smtp-server,但同样的事情,没有变化。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,它在localhost上运行但在应用程序运行时却没有。 这是修复,

  1. 转到谷歌的2step-verification并将其设置为
  2. 转到并注册应用密码here
  3. 然后他们要求选择一个应用程序和一个设备,(我为两者选择了自定义),然后按生成。
  4. 他们提供的密码,将其放入

    EMAIL_HOST_PASSWORD =' app-password'

    你应该好好去。