我目前正在使用 django 发送电子邮件,但问题是,当我在没有互联网连接的本地主机上工作时,我尝试发送电子邮件。我[Errno 11004] getaddrinfo
失败了,这是可以理解的。问题是我想知道是否有办法捕捉错误,以便我可以正确管理它们?有办法吗?
问问题
321 次
3 回答
0
在调用 sendmail 函数的地方试试这个。
import socket
try:
...
except socket.gaierror:
pass
于 2013-02-25T00:17:42.880 回答
0
与其尝试发送电子邮件然后在没有互联网连接的情况下捕获本地主机的错误,不如在开发过程中不要尝试发送电子邮件。您可以使用该django.settings.DEBUG
选项来确定是否应发送电子邮件。
这是一个示例,说明如何将电子邮件路由到文件以进行测试或在没有 Internet 连接的情况下运行。
from django.core import mail
from django import settings
import tempfile
# Change SAVE_EMAIL_TO_FILE to be appropriate for your setup. It could
# be based on settings.DEBUG or some other indication that you're running
# without an internet connection.
SAVE_EMAIL_TO_FILE = settings.DEBUG
def my_send_mail(*args, **kwargs):
if SAVE_EMAIL_TO_FILE:
# No emails during development. Save to a file instead.
with tempfile.NamedTemporaryFile(delete=False) as email_file:
email_file.write("{args}\n{kwargs}\n".format(
args=str(args),
kwargs=str(kwargs)))
else:
# Production environment.
mail.send_mail(*args, **kwargs)
这样做的好处是,如果无法发送电子邮件,您将始终在生产机器上或在连接互联网的机器上进行开发期间遇到异常。
于 2013-02-25T01:40:09.903 回答
0
try:
except Exception, e:
code = '000'
if hasattr(e, 'code'):
code = e.code
msg = 'No message returned from the server'
if hasattr(e, 'msg'):
msg = e.msg
messages.error(
request,
'Error connecting to server. ERROR: {0} {1}'.format(code, msg)
return ''
于 2013-02-25T02:33:18.980 回答