我的键盘记录器Python线程Thread-25中出现异常

问题描述

我有这个远程键盘记录器,起初可以很好地发送电子邮件,但几分钟后它停止发送电子邮件,并向我抛出此错误

Exception in thread Thread-25:
Traceback (most recent call last):
  File "C:\Users\Lisandro0\AppData\Local\Programs\Python\python37\lib\threading.py",line 926,in _bootstrap_inner
    self.run()
  File "C:\Users\Lisandro0\AppData\Local\Programs\Python\python37\lib\threading.py",line 1177,in run
    self.function(*self.args,**self.kwargs)
  File "C:\Users\Lisandro0\Desktop\Desktop3\keylogger\crack.py",line 64,in report
    self.sendmail(EMAIL_ADDRESS,EMAIL_PASSWORD,self.log)
  File "C:\Users\Lisandro0\Desktop\Desktop3\Keylogger\crack.py",line 53,in sendmail
    server.sendmail(email,email,message)
  File "C:\Users\Lisandro0\AppData\Local\Programs\Python\python37\lib\smtplib.py",line 855,in sendmail
    msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\xf1' in position 312: ordinal not in range(128)

我希望阅读简短的代码

感谢您的帮助

解决方法

错误消息很明确:

... Python37 \ lib \ smtplib.py ... UnicodeEncodeError:'ascii'编解码器无法在位置312编码字符'\ xf1':序数不在范围(128)中

smtplib似乎无法编码您的邮件内容。

我做了一些源代码阅读。在smtplib.py中:

    def sendmail(self,from_addr,to_addrs,msg,mail_options=(),rcpt_options=()):
        """This command performs an entire mail transaction.

        The arguments are:
            - from_addr    : The address sending this mail.
            - to_addrs     : A list of addresses to send this mail to.  A bare
                             string will be treated as a list with 1 address.
            - msg          : The message to send.
            - mail_options : List of ESMTP options (such as 8bitmime) for the
                             mail command.
            - rcpt_options : List of ESMTP options (such as DSN commands) for
                             all the rcpt commands.

        msg may be a string containing characters in the ASCII range,or a byte
        string.  A string is encoded to bytes using the ascii codec,and lone
        \\r and \\n characters are converted to \\r\\n characters.

看这里:

msg可以是包含ASCII范围内字符的字符串,也可以是字节字符串

如果要发送非ASCII内容的邮件,可以先将内容编码为字节字符串。

(顺便说一句,如果我做对了,您的问题标题有点离题了,无法掌握问题的关键。)