xml.parsers.expat.ExpatError для префикса zimbra
Я новичок в почтовом сервере Zimbra, и для подключения и отправки почты, которую я использую в следующем уроке, любой человек может подсказать мне еще один более простой способ отправки почты из Zimbra.
Для получения токена пользователя я использую Zimbra PreAuth, но когда я пытаюсь получить токен пользователя, он продолжает выдавать мне эту ошибку
Traceback (most recent call last):
File "/home/nazir/PycharmProjects/temp/check.py", line 66, in <module>
send_email()
File "/home/nazir/PycharmProjects/temp/check.py", line 38, in send_email
secret_preauth_key
File "/usr/local/lib/python3.5/dist-packages/pythonzimbra/tools/auth.py", line 104, in authenticate
server.send_request(auth_request, response)
File "/usr/local/lib/python3.5/dist-packages/pythonzimbra/communication.py", line 142, in send_request
response.set_response(server_response)
File "/usr/local/lib/python3.5/dist-packages/pythonzimbra/response_xml.py", line 26, in set_response
self.response_doc = minidom.parseString(response_text)
File "/usr/lib/python3.5/xml/dom/minidom.py", line 1968, in parseString
return expatbuilder.parseString(string)
File "/usr/lib/python3.5/xml/dom/expatbuilder.py", line 925, in parseString
return builder.parseString(string)
File "/usr/lib/python3.5/xml/dom/expatbuilder.py", line 223, in parseString
parser.Parse(string, True)
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 29, column 93
Вот полный код для получения токена почты Zimbra
def get_zimbraMail_token():
mailstring = 'contact@reviewsai.com'
secret_preauth_key = 'xxxxxxx'
ssl._create_default_https_context = ssl._create_unverified_context
# parser = etree.XMLParser(recover=True)
# etree.fromstring(secret_preauth_key, parser=parser)
# parser = ET.XMLParser(encoding="utf-8")
# mailstring = ET.fromstring(mailstring, parser=parser)
# secret_preauth_key = ET.fromstring(secret_preauth_key, parser=parser)
# mailstring=mailstring.encode('utf-8')
# secret_preauth_key = secret_preauth_key.encode('utf-8')
url = 'https://bplmail.shopnroar.com/'
comm = Communication(url)
print ('commmm ', comm)
print ('url ', url)
print ('mail string ', mailstring)
print ('secret auth key ', secret_preauth_key)
usr_token = auth.authenticate(
url,
mailstring,
secret_preauth_key
)
print('tokennnn ', usr_token)
info_request = comm.gen_request(token=usr_token)
print('info request ', info_request)
info_request.add_request(
'GetFolderRequest',
{
'folder': {
'path': '/inbox'
}
},
'urn:zimbraMail'
)
info_response = comm.send_request(info_request)
print('info response ', info_response)
if not info_response.is_fault():
print(info_response.get_response()['GetFolderResponse']['folder']['n'])
Я уже применяю прокомментированные методы, чтобы преодолеть эту проблему. или любой другой может подключиться и отправить почту с почтового сервера zimbra в python.