Как отправить сообщение об ошибке при печати в исключительном случае пользователю по электронной почте? - PullRequest
2 голосов
/ 10 февраля 2020

Я использую Python3 .7. Я пытаюсь отправить пользователю сообщение об ошибке в условии исключения, если код не работает и следующий код - мой:

except Exception as e:
logging.basicConfig(filename='logfile.log',format='%(asctime)s %(message)s',filemode='w')

logger=logging.getLogger()

logger.setLevel(logging.ERROR)

logger.error(e)
print("ERROR MESSAGE",e)

MY_ADDRESS = '*****@gmail.com'
PASSWORD = '*******'
MY_ADDRESS1 = '****@gmail.com'

s = smtplib.SMTP(host='smtp.gmail.com', port=***)
s.starttls()
s.login(MY_ADDRESS, PASSWORD)
print("login")
msg = MIMEMultipart()       # create a message

msg['From']=MY_ADDRESS
msg['To']=MY_ADDRESS1
msg['Subject']="ERROR MESSAGE"

message="ERROR"
msg.attach.as_string(MIMEText(e))
print("ERROR MAILED")

s.send_message(msg)
s.quit()

Я хочу отправить сообщение об ошибке в переменной 'e', ​​которое печатается

Но я не могу этого сделать. Ниже приведена ошибка:

Это ошибка, которую я хочу напечатать и отправить по почте:

ERROR MESSAGE [Errno 2] No such file or directory: 'C:\\Python37\\Processed\\Invoice.xlsx'

Это ошибка, отображаемая на оболочке python:

Traceback (most recent call last):
  File "C:\Python37\Sopan.py", line 30, in <module>
    wb.save(workbook_name)
  File "C:\Python37\lib\site-packages\openpyxl\workbook\workbook.py", line 408, in save
    save_workbook(self, filename)
  File "C:\Python37\lib\site-packages\openpyxl\writer\excel.py", line 291, in save_workbook
    archive = ZipFile(filename, 'w', ZIP_DEFLATED, allowZip64=True)
  File "C:\Python37\lib\zipfile.py", line 1207, in __init__
    self.fp = io.open(file, filemode)
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Python37\\Processed\\Invoice.xlsx'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python37\Sopan.py", line 88, in <module>
    msg.attach.as_string(MIMEText(e))
AttributeError: 'function' object has no attribute 'as_string'
During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python37\Sopan.py", line 88, in <module>
    msg.attach.as_string(MIMEText(e))
AttributeError: 'function' object has no attribute 'as_string'

Как отправить сообщение об ошибке, которое печатается в переменной 'e', ​​по электронной почте кому-либо

СПАСИБО

1 Ответ

2 голосов
/ 10 февраля 2020

Сам модуль регистрации имеет обработчик smtp, вы можете сделать что-то вроде этого:

import logging
import logging.handlers

smtp_handler = logging.handlers.SMTPHandler(mailhost=("smtp.example.com", 25),
                                            fromaddr="someone@something.com", 
                                            toaddrs="receiver@mail.com",
                                            subject=u"ERROR IN YOURAPP!")


logger = logging.getLogger()
logger.addHandler(smtp_handler)

try:
  raise Exception
except Exception as e:
  logger.exception('Unhandled Exception')

для получения дополнительной информации см. do c

...