python smtplib не отправляет электронную почту с адресом office365 - PullRequest
0 голосов
/ 06 апреля 2020

Я использую 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

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Не рассматривайте 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 Отправитель в порядке \ r \ n 'ответ: retcode (250); Сообщение: 2.1.0 Отправитель ОК отправляет: 'rcpt TO: \ r \ n' ответ: '250 2.1.5 Получатель ОК \ r \ n' ответ: retcode (250); Сообщение: 2.1.5 Получатель OK отправка: 'data \ r \ n' ответ: '354 Начать ввод почты; конец. \ r \ n 'ответ: retcode (354); Msg: начать ввод почты; конец с. данные: (354, 'Начать ввод почты; конец с.') отправить: 'Сообщение \ r \ n. \ r \ n' ответ: '250 2.0.0 OK [Имя хоста = DB8P190MB0732.EURP190.PROD.OUTLOOK.COM] \ r \ n 'ответ: retcode (250); Сообщение: 2.0.0 OK [Hostname = DB8P190MB0732.EURP190.PROD.OUTLOOK.COM] данные: (250, '2.0.0 OK [Hostname = DB8P190MB0732.EURP190.PROD.OUTLOOK.COM]') {}

Если вы не можете получить электронное письмо, скорее всего, оно пришло не из самого кода, а из того места, где оно выполняется. На каком сервере вы выполняете код?

0 голосов
/ 06 апреля 2020

Возможно, это проблема кодировки символов.

Попробуйте сбросить пароль и удалить любые специальные символы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...