TypeError: can't concat bytes to IMAP4_SSL

TypeError: can't concat bytes to IMAP4_SSL

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

TypeError: can't concat bytes to IMAP4_SSL

我已经在 google 中更新了我的帐户设置以启用 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. 为什么我会得到它?
  3. 我该如何解决?

非常感谢您的帮助。 目前我只是在玩 Python,但我很难理解这一点。我也已经坚持了一段时间。

此致, 夏克

更新:

嗨,麦克斯, 请参阅下面它生成的错误:

    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 –

更新:

成功了!感谢您的帮助

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

不能同时是这两个对象,所以现在邮件是 IMAP4_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 服务器不同,因此您可能需要更加小心变量名称,因此我也对其进行了更改。您也没有使用端口变量。