【问题标题】:Django mail sending error with DEBUG=FalseDjango 邮件发送错误,DEBUG=False
【发布时间】:2018-04-16 01:21:26
【问题描述】:

在我的 Django 网站中,我有一个联系表。如果提交了联系表格,则需要向用户和管理员发送电子邮件。当 DEBUG 为 True 时,电子邮件已发送。但是当 DEBUG 为 False 时,它​​不会发送邮件。这里我使用的是 Django 邮件

settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'email@gmail.com'
EMAIL_HOST_PASSWORD = 'abc123'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER

【问题讨论】:

  • 请从settings.py文件中发布相关邮件设置。
  • 那么,一个愚蠢的问题 - 您是否在您的帐户中启用了不太安全的应用程序? myaccount.google.com/lesssecureapps 或者您是否设置了应用专用密码?
  • 您实际发送电子邮件的代码是什么样的?你能添加fail_silently=False 属性吗?
  • 是的,我在我的帐户和fail_silently=False 上启用了不太安全的应用程序。但还是报错

标签: django email


【解决方案1】:

首先,当 DEBUG 为 True 时,电子邮件是由 SMTP 服务器发送的,还是只是在控制台中打印电子邮件?您是否还在为您的 EMAIL_BACKEND 设置使用 SMTP 电子邮件后端,或者您正在为您的开发设置使用 console.backend?因为通常你应该在开发时将 Email_backend 设置为 console.backend。 第二,当你切换到生产心情时,应用程序不会发送邮件,你有没有收到任何错误?您是否测试过 google smtp 服务器连接是否有效?(详情请查看:https://docs.djangoproject.com/en/1.11/topics/email/#smtp-backend)有时您必须为 google smtp 服务器设置 ssl_certfile 和 ssl_keyfile,这取决于您的 google smtp 安全级别。

【讨论】:

  • 我的settings.py 与上图相同。如果DEBUG=True 则邮件从EMAIL_HOST_USER 发送到给定的收件人电子邮件。EMAIL_HOST_USER 是一个 gmail 帐户。但是当DEBUG=False 它不会发送电子邮件。
猜你喜欢
  • 2017-01-20
  • 2011-06-17
  • 2013-03-02
  • 2021-11-03
  • 2021-08-13
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多