I am trying to write a python code with the try and except method where anytime an exception occurs it should give me a slack notification with the exception occurred. Here is the code that I have written:
try:
with MailBox('imap.gmail.com').login(username, password) as mailbox:
print(mailbox)
except Exception as e:
print(e)
slack_message = {'text': e}
http = urllib3.PoolManager()
response = http.request('POST',
slack_webhook_url,
body=json.dumps(slack_message),
headers={'Content-Type': 'application/json'},
retries=False)
but it gave me the following error:
TypeError: Object of type MailboxLoginError is not JSON serializable
From Error, I understand that the body needs to be JSON serializable but not sure how to solve it. Can you help me? Thank you
When you try to dump an Exception it fails because it's a Python object and you should transform it to a string like in the code below:
try:
with MailBox('imap.gmail.com').login(username, password) as mailbox:
print(mailbox)
except Exception as e:
print(e)
slack_message = {'text': str(e)} # Change type of "e" to string
http = urllib3.PoolManager()
response = http.request('POST',
slack_webhook_url,
body=json.dumps(slack_message),
headers={'Content-Type': 'application/json'},
retries=False)