使用Django发送电子邮件时出现SSL错误。

3
这是我通过Django发送邮件时看到的内容:

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)

这是我在settings.py中的电子邮件配置:
# Email Settings
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_HOST_USER = "xxxxxxxx@gmail.com"
EMAIL_HOST_PASSWORD = "xxxxxxxxxxxxx"
EMAIL_USE_TLS = True

这是我发送邮件的方式:

send_mail(
    "Subject",
    "Test message",
    settings.EMAIL_HOST_USER,
    ["xxxxxxxxx@gmail.com"],
    fail_silently=False,
)

你使用的是哪个Django和Python版本?除非你提供一些版本信息,否则我们无法真正地帮助你。 - Ben the Coder
Django 4 和 Python 3.10 - Anup Shrestha
3个回答

3
默认配置在Django 4.2中已更改,详细信息和解决方法请参见这里

虽然这个链接可能回答了问题,但最好在这里包含答案的重要部分,并提供链接作为参考。如果链接的页面发生变化,仅有链接的答案可能会失效。- 来自审核 - TheTridentGuy supports Ukraine
虽然这个链接可能回答了问题,但最好在这里包含答案的关键部分,并提供链接作为参考。仅有链接的答案如果链接页面发生变化,可能会变得无效。- 来自评论 - undefined

2
我使用的是 Django 4.2 和 Python 3.10,遇到了同样的问题。将 Django 降级到 4.1.7 对我有用。希望这能帮到你。

-2
如果您在使用Django 4.2和Python 3.10时遇到兼容性问题或错误,您可以考虑将Django降级到一个兼容的版本。以下是降级Django的详细步骤:
  1. 确定兼容的Django版本:确定与Python 3.10兼容的Django版本。您可以参考Django项目的文档、发布说明或兼容矩阵,找到推荐的Django版本。
  2. 更新requirements.txt中的Django版本:在Django项目的根目录下打开requirements.txt文件。找到指定Django版本的那一行,可能类似于Django==4.2。将版本号替换为兼容的Django版本。例如,如果Django 4.1.7是兼容的版本,则将该行改为Django==4.1.7。
  3. 保存更改:保存更新后的requirements.txt文件。
  4. 安装兼容的Django版本:打开终端或命令提示符,切换到Django项目的目录下。运行以下命令来安装兼容的Django版本:
  5. pip install -r requirements.txt --upgrade

    此命令将安装指定的Django版本及其依赖项。

  6. 验证Django版本:安装完成后,可以通过运行以下命令验证是否已将Django降级到兼容版本:
  7. python -m django --version

    此命令将显示当前安装的Django版本,应与您在requirements.txt中指定的降级版本匹配。

通过按照以下步骤,您可以成功将Django降级到与Python 3.10兼容的版本,并解决任何兼容性问题。需要注意的是,降级Django可能会影响较新版本中可用的某些功能或功能,因此请务必在降级后彻底测试您的应用程序。
安装收集的软件包:Django 尝试卸载:Django 找到现有的安装:Django 4.2.2 正在卸载 Django-4.2.2: 成功卸载 Django-4.2.2 成功安装 Django-4.1.7 python3 -m django --version

4.1.7

pip install -r requirements.txt --upgrade

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined
你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community
欢迎来到Stack Overflow, Vivek kumar jha!你的回答似乎可能是由人工智能(例如ChatGPT)编写的(全部或部分)。提醒一下,在这里不允许发布由人工智能生成的内容。如果你在回答中使用了人工智能工具,请鼓励你删除它。我们希望你能成为我们社区的一员,并在未来贡献你自己的高质量帖子。谢谢! - undefined
欢迎来到Stack Overflow,Vivek kumar jha!你的回答似乎是由人工智能(例如ChatGPT)编写的(全部或部分)。提醒一下,在这里不允许发布由人工智能生成的内容(//meta.stackoverflow.com/q/421831)。如果你在回答中使用了人工智能工具,请考虑删除它。我们希望你能成为我们社区的一员,并在未来以你自己的高质量帖子做出贡献。谢谢! - NotTheDr01ds
读者应该仔细而批判地审查这个答案,因为由人工智能生成的信息往往包含基本错误和错误信息。如果您发现质量问题和/或有理由相信这个答案是由人工智能生成的,请相应地提供反馈。 - NotTheDr01ds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接