【问题标题】:Django configuration to send emailDjango 配置发送电子邮件
【发布时间】:2013-05-05 04:49:36
【问题描述】:

一些事实:
我正在使用 devserver 在本地主机上工作。我有一个 Django 项目,其中电子邮件发送工作完美。我建立了一个新的Django项目,都是1.4.5,我将settings.py中工作项目(EMAIL_HOST,EMAIL_PORT ...)中的电子邮件设置复制/粘贴到新项目,我用manage.py打开一个shell和在它可以发送电子邮件的第一个项目上从 django.core.mail 加载 send_mail(我在我的电子邮件客户端中收到它们),第二个电子邮件永远不会被发送。我尝试了各种服务器,gmail 和 gandi。我直接尝试在纯 Python 代码中使用 smtplib,它使用相同的设置。在使用第一个项目和 smtplib 发送邮件时,我可以看到该函数需要几秒钟才能在命令行中返回提示,但是对于第二个项目,它会立即返回提示,这让我觉得什么都没有发生。

所以我的问题是我的新项目的配置可能有什么问题?去哪里看?如果可能的话如何调试? (send_mail 函数只返回 1,也就是我发送的邮件数量,有没有办法得到回溯或一些有用的错误信息?)

【问题讨论】:

  • 只有一个问题,您在设置中使用 DEBUG=true 吗?
  • @lalo 在两个项目中我的本地主机上都有 DEBUG=True,服务器上的 DEBUG=False (服务器上的行为相同,电子邮件不适用于新项目)。跨度>

标签: django


【解决方案1】:

回答您的一个问题:

>>>如何调试?

在调用您要调试的任何内容之前使用pdb.set_trace()

【讨论】:

  • 能否详细说明如何使用 pdb 和 send_mail 功能?
  • 根据我的经验,我使用 pdb 来停止代码的执行并开始调试。在我的问题中,没有代码执行,只是一个不返回可能对我有帮助的消息的函数。我看不出 pdb 会如何以我使用它的方式帮助我。如果您知道一种可能与此处相关的以不同方式使用它的方法,请分享。
  • 嗨,Bastian,没有什么能阻止你使用pdb进入“发送邮件”功能(如果它是一个 django 库并不重要)。您可以在 pdb 提示符上使用 step
【解决方案2】:

我知道这很简单,它必须是一个设置,而且确实如此。我不知道那个来自哪里,可能它默认出现在新的 django 项目中,我不知道,但我有

EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"

在我的设置文件中,远离我的电子邮件设置,我自己从未输入过。将其更改为 SMTP 或注释它会使 Django 实际发送电子邮件。

【讨论】:

    猜你喜欢
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2016-06-08
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    相关资源
    最近更新 更多