2013-05-10 72 views
0

一些事实:
我在本地主机上的工作与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的邮件时,我可以看到该函数需要几秒钟才能在命令行中返回提示,但第二个项目会立即返回提示,这让我觉得没有任何事情发生。 Django的配置,以发送电子邮件

所以我的问题是什么可能是错误的,在我的新项目的配置?去哪里看?如果可能的话如何调试呢? (该send_mail函数只返回1,这是我发出的邮件的数量,有没有办法让一个追溯或一些有用的错误消息?)

+0

只是一个问题,你是否在你的设置中使用了DEBUG = true? – lalo 2013-05-11 03:57:12

+0

@lalo在这两个项目中我在服务器上的DEBUG = True和DEBUG = False(服务器上的行为相同,电子邮件不适用于新项目)。 – Bastian 2013-05-11 09:21:49

回答

0

回答您的问题之一:

>>>如何调试?

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

+0

您可以扩展如何使用pdb与send_mail功能吗? – Bastian 2013-05-10 13:34:45

+0

以我的经验,我使用pdb停止执行代码并开始调试。在我的问题中,没有代码执行,只是一个不返回可能对我有帮助的消息的函数。我没有看到pdb如何在我使用它的方式帮助我。如果你知道一种不同的使用方法,请在此分享。 – Bastian 2013-05-10 13:44:45

+0

嗨巴斯蒂安,没有什么能阻止你使用'pdb'将步骤*转换成*发送邮件的功能(它并不重要,如果它是一个django库)。您可以在pdb提示符处使用'step'。 – 2013-05-10 14:05:57

0

我知道这很容易,它必须是一个设置,事实上它是。我没有在那里的一个来源,可能是它默认显示在新的Django项目,我不知道,但我有

EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" 
在我的设置文件从我的电子邮件设置

,到目前为止,我从来没有进入它自己。将其更改为SMTP或对其进行评论会使Django实际发送电子邮件。