【问题标题】:python smtplib not sending email with office365 addresspython smtplib不发送带有office365地址的电子邮件
【发布时间】:2020-04-08 18:29:30
【问题描述】:

我正在使用带有以下代码的 smtplib,根据 office365 文档,我应该使用 smtp.office365.com 地址作为 smtp 但无法使用它,我尝试使用 smtp.outlook .com 地址并且能够通过此工具接收邮件 https://www.gmass.co/smtp-test#

但是使用下面的代码无法让邮件在相同的配置下工作。

  def send_Mail(template,P_EMAIL, msg_header):
    msg = MIMEMultipart()
    msg['From'] = 'dcm@whaii.com'
    msg['To'] = P_EMAIL
    msg['Subject'] = msg_header

    msg.attach(MIMEText(template, 'plain'))
    try:
      server = smtplib.SMTP('smtp.outlook.com', 587)
      server.set_debuglevel(True)
      #server.ehlo()
      server.starttls()
      server.login('dcm@whaii.com', 'xxxx')
      text = msg.as_string()
      server.sendmail('xxxxx', P_EMAIL, template)
      print('email sent')
      server.quit()
    except Exception as e:
        print(e)
    return True

这是来自python服务器的日志

send: 'ehlo [172.50.5.2]\r\n'
reply: b'250-BYAPR07CA0022.outlook.office365.com Hello [167.88.61.92]\r\n'
reply: b'250-SIZE 157286400\r\n'
reply: b'250-PIPELINING\r\n'
reply: b'250-DSN\r\n'
reply: b'250-ENHANCEDSTATUSCODES\r\n'
reply: b'250-STARTTLS\r\n'
reply: b'250-8BITMIME\r\n'
reply: b'250-BINARYMIME\r\n'
reply: b'250-CHUNKING\r\n'
reply: b'250 SMTPUTF8\r\n'
reply: retcode (250); Msg: b'BYAPR07CA0022.outlook.office365.com Hello [167.88.61.92]\nSIZE 157286400\nPIPELINING\nDSN\nENHANCEDSTATUSCODES\nSTARTTLS\n8BITMIME\nBINARYMIME\nCHUNKING\nSMTPUTF8'
send: 'STARTTLS\r\n'
reply: b'220 2.0.0 SMTP server ready\r\n'
reply: retcode (220); Msg: b'2.0.0 SMTP server ready'

以及来自 smtp 测试工具的日志

Connected to smtp://smtp.outlook.com:587/?starttls=always
<< 220 CO2PR05CA0093.outlook.office365.com Microsoft ESMTP MAIL Service ready at Mon, 6 Apr 2020 09:37:47 퍍
>> EHLO [172.31.0.185]
<< 250-CO2PR05CA0093.outlook.office365.com Hello [52.88.153.215]
<< 250-SIZE 157286400
<< 250-PIPELINING
<< 250-DSN
<< 250-ENHANCEDSTATUSCODES
<< 250-STARTTLS
<< 250-8BITMIME
<< 250-BINARYMIME
<< 250-CHUNKING
<< 250 SMTPUTF8
>> STARTTLS
<< 220 2.0.0 SMTP server ready
>> EHLO [172.31.0.185]
<< 250-CO2PR05CA0093.outlook.office365.com Hello [52.88.153.215]
<< 250-SIZE 157286400
<< 250-PIPELINING
<< 250-DSN
<< 250-ENHANCEDSTATUSCODES
<< 250-AUTH LOGIN XOAUTH2
<< 250-8BITMIME
<< 250-BINARYMIME
<< 250-CHUNKING
<< 250 SMTPUTF8
>> AUTH LOGIN
<< 334 VXNlcm5hbWU6
>> ZGNtQHdoYWlpLmNvbQ==
<< 334 UGFzc3dvcmQ6
>> bjh4RU00dlhROFdIWjlxRQ==
<< 235 2.7.0 Authentication successful
>> MAIL FROM:<dcm@whaii.com>
>> RCPT TO:<maisnamraju@gmail.com>
<< 250 2.1.0 Sender OK
<< 250 2.1.5 Recipient OK
>> DATA
<< 354 Start mail input; end with <CRLF>.<CRLF>
>> From: dcm@whaii.com
>> Date: Mon, 06 Apr 2020 09:37:51 퍍
>> Subject: SMTP test from smtp.outlook.com
>> Message-Id: <0F3W5HOSAAU4.3W8YGW3D6FX53@WIN-AUIR3RRGP88>
>> To: maisnamraju@gmail.com
>> MIME-Version: 1.0
>> Content-Type: text/Test message
>>
>>
>> .
<< 250 2.0.0 OK <0F3W5HOSAAU4.3W8YGW3D6FX53@WIN-AUIR3RRGP88> [Hostname=DB8P189MB0636.EURP189.PROD.OUTLOOK.COM]``

Pretty confused now as to what I am doing wrong now. Would appreciate some help. Thanksf

【问题讨论】:

    标签: python email smtp office365


    【解决方案1】:

    这可能是字符编码问题。

    尝试重置您的密码并删除任何特殊字符。

    【讨论】:

      【解决方案2】:

      不要将站点 SMTP 测试视为与 office365 smtp 一起正常工作。

      您没有显示 Python 代码中的所有日志。在 server.login() 之后你应该有这样的答案

      回复:'235 2.7.0 身份验证成功\r\n' 回复:retcode (235); Msg: 2.7.0 认证成功 (235, '2.7.0 认证 成功')

      然后在 sendEmail() 之后 像这样:

      send: 'mail FROM: size=7\r\n' 回复: '250 2.1.0 Sender OK\r\n' 回复: retcode (250);消息:2.1.0 发件人 OK 发送:'rcpt TO:\r\n' 回复: '250 2.1.5 Recipient OK\r\n' 回复: 重新编码(250);消息:2.1.5 收件人 OK 发送:'data\r\n' 回复:'354 开始邮件输入;以 .\r\n' 结尾 回复: retcode (354); Msg:开始邮件输入;以 .数据:(354,'开始邮件 输入;以.'结尾)发送:'消息\r\n。\r\n'回复:'250 2.0.0 好的 [主机名=DB8P190MB0732.EURP190.PROD.OUTLOOK.COM]\r\n' 回复:retcode (250);消息:2.0.0 好 [主机名=DB8P190MB0732.EURP190.PROD.OUTLOOK.COM] 数据:(250,'2.0.0 好的 [主机名=DB8P190MB0732.EURP190.PROD.OUTLOOK.COM]') {}

      如果收不到邮件,可能不是代码本身,而是执行位置。你在什么样的服务器上执行代码?

      【讨论】:

        猜你喜欢
        • 2019-12-04
        • 2021-04-26
        • 2016-11-04
        • 1970-01-01
        • 2014-01-31
        • 2021-10-09
        • 2021-12-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多