代码之家  ›  专栏  ›  技术社区  ›  sjaak van boer

TypeError:无法将字节连接到IMAP4\U SSL

  •  1
  • sjaak van boer  · 技术社区  · 7 年前

    我想联系谷歌邮件服务器,但我得到以下错误代码:

    TypeError:无法将字节连接到IMAP4\U SSL

    我还修改了我在谷歌上的账户设置以启用IMAP

    到目前为止,我的代码(非常基本,我知道:):

    import imaplib
    
    mail = "mail@gmail.com"
    pwd = "pwd"
    smtp_server = "imap.gmail.com"
    smtp_port = 993
    
    mail = imaplib.IMAP4_SSL(smtp_server)
    mail.login(mail,pwd)
    

    我的问题:

    1. 这个错误代码是什么意思?
    2. 我该怎么解决?

    非常感谢你的帮助。 目前我只是在玩Python,但我很难理解这一点。而且我已经在这上面停留了一段时间。

    当做 Sjaak公司

    更新:

    嗨,Max, 请参见下面它产生的错误:

        mail.login(mail,pwd)
      File "/usr/lib/python3.5/imaplib.py", line 580, in login
        typ, dat = self._simple_command('LOGIN', user, self._quote(password))
      File "/usr/lib/python3.5/imaplib.py", line 1180, in _simple_command
        return self._command_complete(name, self._command(name, *args))
      File "/usr/lib/python3.5/imaplib.py", line 945, in _command
        data = data + b' ' + arg
    TypeError: can't concat bytes to IMAP4_SSL
    

    Python版本:3.5.2

    谢谢。

    你好,Sjaak

    更新:

    成功了!thx用于帮助

    1 回复  |  直到 7 年前
        1
  •  1
  •   Max    7 年前

    首先将邮件定义为字符串: mail = "mail@gmail.com"
    然后将其重新定义为新的IMAP对象: mail = imaplib.IMAP4_SSL(smtp_server)

    这两件事不可能同时发生,所以现在邮件是IMAP4\U SSL连接对象。

    那么你会的 mail.login(mail,pwd) ,传递连接对象,而不是所需的电子邮件地址。

    import imaplib
    
    username = "mail@gmail.com"
    pwd = "pwd"
    imap_server = "imap.gmail.com"
    imap_port = 993
    
    conn = imaplib.IMAP4_SSL(imap_server, imap_port)
    conn.login(username, pwd)
    

    为了清楚起见,我把它们都改了。此外,IMAP服务器与SMTP服务器不同,因此您可能需要更小心地使用变量名,因此我也对其进行了更改。您也没有使用端口变量。