【发布时间】:2011-11-22 06:27:18
【问题描述】:
我正在尝试使用 suds 0.4.1 通过 Exchange Web 服务发送电子邮件:
import suds
from suds.client import Client
from suds.transport.https import WindowsHttpAuthenticated
url = "file:///C:/Services.wsdl"
user = 'domain\\user'
password = "hardtoguess"
ntlm = WindowsHttpAuthenticated(username=user,password=password)
c = Client(url, transport=ntlm)
xml = ''' <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <CreateItem
MessageDisposition="SendAndSaveCopy"
xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<SavedItemFolderId> <DistinguishedFolderId Id="sentitems"
xmlns="http://schemas.microsoft.com/exchange/services/2006/types"/>
</SavedItemFolderId> <Items> <Message
xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
<ItemClass>IPM.Note</ItemClass> <Subject>Sent via Python->Exchange->EWS</Subject>
<Body BodyType="Text">This message has been sent to you via Python,
Exchange and EWS :)</Body> <ToRecipients> <Mailbox>
<EmailAddress>imran.azad@localhost</EmailAddress> </Mailbox> </ToRecipients>
</Message> </Items>
</CreateItem> </soap:Body></soap:Envelope>'''
attr = c.service.CreateItem(__inject={'msg':xml})
xml = ''' <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <soap:Body>
<ResolveNames
xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
ReturnFullContactData="true"> <UnresolvedEntry>azadi</UnresolvedEntry>
</ResolveNames> </soap:Body> </soap:Envelope> '''
attr = c.service.ResolveNames(__inject={'msg':t})
print attr
我可以正常进行身份验证,但是我不断收到以下错误:
Traceback (most recent call last):
File "soap.py", line 10, in <module>
c = Client(url, transport=ntlm)
File "build\bdist.win32\egg\suds\client.py", line 112, in __init__
File "build\bdist.win32\egg\suds\reader.py", line 152, in open
File "build\bdist.win32\egg\suds\wsdl.py", line 159, in __init__
File "build\bdist.win32\egg\suds\wsdl.py", line 220, in build_schema
File "build\bdist.win32\egg\suds\xsd\schema.py", line 93, in load
File "build\bdist.win32\egg\suds\xsd\schema.py", line 305, in open_imports
File "build\bdist.win32\egg\suds\xsd\sxbasic.py", line 542, in open
File "build\bdist.win32\egg\suds\xsd\sxbasic.py", line 563, in download
File "build\bdist.win32\egg\suds\xsd\schema.py", line 397, in instance
File "build\bdist.win32\egg\suds\xsd\schema.py", line 226, in __init__
File "build\bdist.win32\egg\suds\xsd\schema.py", line 305, in open_imports
File "build\bdist.win32\egg\suds\xsd\sxbasic.py", line 542, in open
File "build\bdist.win32\egg\suds\xsd\sxbasic.py", line 563, in download
File "build\bdist.win32\egg\suds\xsd\schema.py", line 397, in instance
File "build\bdist.win32\egg\suds\xsd\schema.py", line 226, in __init__
File "build\bdist.win32\egg\suds\xsd\schema.py", line 305, in open_imports
File "build\bdist.win32\egg\suds\xsd\sxbasic.py", line 542, in open
File "build\bdist.win32\egg\suds\xsd\sxbasic.py", line 560, in download
File "build\bdist.win32\egg\suds\reader.py", line 79, in open
File "build\bdist.win32\egg\suds\reader.py", line 95, in download
File "build\bdist.win32\egg\suds\transport\https.py", line 60, in open
File "build\bdist.win32\egg\suds\transport\http.py", line 62, in open
File "build\bdist.win32\egg\suds\transport\http.py", line 118, in u2open
File "C:\Python26\lib\urllib2.py", line 391, in open
response = self._open(req, data)
File "C:\Python26\lib\urllib2.py", line 409, in _open
'_open', req)
File "C:\Python26\lib\urllib2.py", line 369, in _call_chain
result = func(*args)
File "C:\Python26\lib\urllib2.py", line 1170, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "C:\Python26\lib\urllib2.py", line 1143, in do_open
r = h.getresponse()
File "C:\Python26\lib\httplib.py", line 990, in getresponse
response.begin()
File "C:\Python26\lib\httplib.py", line 391, in begin
version, status, reason = self._read_status()
File "C:\Python26\lib\httplib.py", line 355, in _read_status
raise BadStatusLine(line)
httplib.BadStatusLine
任何建议将不胜感激。谢谢
【问题讨论】:
-
打开完整的 SUDS 日志记录以准确找出导致错误的 URL。我有一个类似的问题,原来是一个过载的 www.w3.org 服务器是问题所在。解决方案是为 www.w3.org 模式使用静态缓存。看到这个答案:stackoverflow.com/a/8562410/3571
标签: python exchange-server suds exchangewebservices httplib