【问题标题】:TypeError: can't concat bytes to IMAP4_SSLTypeError:无法将字节连接到 IMAP4_SSL
【发布时间】:2018-05-02 07:59:30
【问题描述】:

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

TypeError:无法将字节连接到 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 –

更新:

成功了!谢谢帮忙

【问题讨论】:

  • 你能提供整个堆栈跟踪吗?该错误意味着它不能将 8 位字节对象(如 b'test')添加到 IMAP4_SSL 对象(这是一个类的实例),这当然是不允许的;但我不明白它为什么会那样做。另请提供您正在使用的 Python 的确切版本。
  • 我已经更新了我的帖子,回答了你的问题

标签: python imap gmail-imap imaplib


【解决方案1】:

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

不能同时是这两个东西,所以现在 mail 是 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 服务器不同,因此您可能希望对变量名更加小心,因此我也对其进行了更改。你也没有使用你的端口变量。

【讨论】:

    猜你喜欢
    • 2020-03-10
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多