TypeError:无法将字节连接到IMAP4_SSL

时间:2017-11-18 18:02:31

标签: python imap gmail-imap imaplib

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

  

TypeError:无法将字节连接到IMAP4_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. 为什么我能得到它?
  3. 我该如何解决?
  4. 非常感谢您的帮助。 目前我只是在玩Python,但我很难理解这一点。我也已经坚持了一段时间。

    此致 Sjaak

    更新

    Hi 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

    THX。

    问候,Sjaak -

    更新

    有效! thx帮忙

1 个答案:

答案 0 :(得分:1)

首先将邮件定义为字符串:BastionASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: AvailabilityZones: Fn::GetAZs: !Ref "AWS::Region" Cooldown: '0' DesiredCapacity: '0' HealthCheckGracePeriod: '60' HealthCheckType: EC2 MaxSize: '0' MinSize: '0' VPCZoneIdentifier: !Ref bastionSubnetList LaunchConfigurationName: Ref: BastionLC Tags: - Key: Environment Value: !Ref awsTagsEnvironment PropagateAtLaunch: true - Key: Application Value: !Ref awsTagsApplication PropagateAtLaunch: true - Key: Name Value: !Join [ "-", [ !Ref awsTagsNamePrefix, "asg-ec2" ] ] PropagateAtLaunch: true TargetGroupARNs: !If - CreateNetworkLoadBalancer - !Ref NLBTargetGroup - !Ref "AWS::NoValue" LoadBalancerNames: !If - CreateClassicLoadBalancer - !Ref ELB - !Ref "AWS::NoValue" TerminationPolicies: - OldestInstance
然后,您将其重新定义为新的IMAP对象:mail = "mail@gmail.com"

它不能同时出现这两种情况,所以现在邮件是IMAP4_SSL连接对象。

然后执行mail = imaplib.IMAP4_SSL(smtp_server),传递连接对象,而不是您想要的电子邮件地址。

您可以通过将一个定义或另一个定义更改为另一个名称来轻松解决此问题:

mail.login(mail,pwd)

为了清晰起见,我已经改变了它们。此外,IMAP服务器与SMTP服务器不同,因此您可能希望对变量名称更加小心,因此我也对其进行了更改。您也没有使用您的端口变量。