发送包含节日志信息的电子邮件
Posted
技术标签:
【中文标题】发送包含节日志信息的电子邮件【英文标题】:Send email with info of stanza logs 【发布时间】:2012-05-31 11:40:36 【问题描述】:我正在处理来自该节的信息,其中一个目标是检查是否有错误并通过电子邮件发送通知。
我能够做的是捕获错误(IqError 或 IqTimeout)并发送带有书面信息的通用电子邮件:
except IqTimeout:
USERNAME = 'user'
PASSWORD = 'password'
sender = 'someguy@myemail.com'
receivers = 'bshell@myemail.com'
message = """From: SomeGuy <someguy@myemail.com>
To: Barbara Shell <bshell@myemail.com>
Subject: Alert of an Error
This is a test e-mail message: IqTimeout
"""
smtpObj = smtplib.SMTP('smtp.sendmail.net', 123)
smtpObj.login(USERNAME, PASSWORD)
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
我还尝试使用“错误”节中的信息打印日志,但只得到一个字段:
logging.error("Could not register account. Error code: %s" %e.iq['error']['code'])
我想要的是我的节中要发送到电子邮件的错误信息,基本上可以这样:
To: bshell@myemail.com
From: someguy@myemail.com
Subject: Alert of an Error
This is your error:
RECV: <iq to="bshell@myemail.net/36457242971338462713453506" from="chat.test.net" id="3" type="error"><oo xmlns="http://chat.net/profile" /><error code="404" type="cancel"><remote-server-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /></error></iq>
我正在用 python 写作。如果您需要更多信息,我将非常愿意回答!
提前致谢!
问候,
【问题讨论】:
你使用的是什么 XMPP 库? 【参考方案1】:如果您想在您的电子邮件中包含收到的错误节,您只需:
except IqError as e:
...
message = """...
RECV: %s""" % e.iq
如果您只想提取部分错误数据,您可以使用以下任何一种:
e.iq['error']['code']
e.iq['error']['type']
e.iq['error']['condition']
e.iq['error']['text']
在您的示例中将分别提供:
'404'
'cancel'
'remote-server-not-found'
"" # Because no human friendly text was included
现在,这可能是您面临的问题。当您捕捉到IqError
异常时,e.iq
是响应节,其中包括可以像上面那样访问的错误数据。如果您正在捕捉IqTimeout
,那么e.iq
是原始 节,它从未收到响应。在这种情况下,确实没有错误的 XML 可以从中提取数据。当然,您可能仍然会得到看起来像错误数据的内容,但这可能是因为在访问 e.iq['error']
时插入了一个错误元素(如果不存在)。
别忘了还有sleek@conference.jabber.org
空间可以获取 SleekXMPP 相关帮助。
-- 兰斯
【讨论】:
感谢兰斯!现在我怎样才能进入sslough@conference.jabber.org?新的! 如果使用adium,然后文件> 加入群聊,然后输入sslough 作为房间名称,并输入conference.jabber.org 作为服务器。大多数客户都以类似的方式运作。以上是关于发送包含节日志信息的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章