Получение ошибки: расширение SMTP AUTH не поддерживается сервером Python3 - PullRequest
0 голосов
/ 08 июня 2019

, когда я тестирую ниже код с server = smtplib.SMTP('smpt.gmail.com:587'), он работает нормально.

Но когда я меняю SMTP-сервер на server = smtplib.SMTP('10.10.9.9: 25') - выдает ошибку.Этот SMTP не требует пароля.

Так чего мне здесь не хватает?

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import pandas as pd

def send_email(user, recipient, subject):
    try:
        d = {'Col1':[1,2], 'Col2':[3,4]}
        df=pd.DataFrame(d)
        df_html = df.to_html()
        dfPart = MIMEText(df_html,'html')

        user = "myEmail@gmail.com"
        #pwd = No need for password with this SMTP
        subject = "Test subject"
        recipients = "some_recipientk@blabla.com"
        #Container
        msg = MIMEMultipart('alternative')
        msg['Subject'] = subject
        msg['From'] = user
        msg['To'] = ",".join(recipients)
        msg.attach(dfPart)

        #server = smtplib.SMTP('smpt.gmail.com:587') #this works
        server = smtplib.SMTP('10.10.9.9: 25') #this doesn't work
        server.starttls()
        server.login(user, pwd)

        server.sendmail(user, recipients, msg.as_string())
        server.close()
        print("Mail sent succesfully!")
    except Exception as e:
        print(str(e))
        print("Failed to send email")
send_email(user,"","Test Subject")

Ответы [ 2 ]

1 голос
/ 08 июня 2019

Привет, я не совсем уверен, почему это не работает, но у меня есть несколько вещей, которые вы можете проверить.

  • server = smtplib.SMTP ('10 .10.9.9: 25 ')
    у вас есть пробел в строке ip: port, попробуйте удалить его.

  • Кажется, что комбинация ip: port происходит от частного адреса локальной сети
    Попробуйте пропинговать этот адрес, чтобы узнать, сможете ли вы его достичь. Если вы не можете, тогда поговорите с человеком, который управляет машиной с данным ip в вашей сети.

    Если вы можете пропинговать ip, есть вероятность, что SMTP-сервер недоступен на данном порту. В этом случае также обратитесь к лицу, ответственному за управление машиной с IP: 10.10.9.9

    использовать данную команду на терминале
    пинг 10.10.9.9


  • Также перед входом в систему и sendmail вам следует подключиться к серверу с помощью connect (), правильный порядок будет.

    server = smtplib.SMTP ('10 .10.9.9: 25 ')
    server.starttls ()
    server.connect ('10 .10.9.9 ', 465)
    server.login (пользователь, pwd)
    server.sendmail (пользователь, получатели, msg.as_string ())
    server.close ()

465 - порт по умолчанию для SMTP-сервера

Спасибо
Дайте мне знать, если это вам помогло!

1 голос
/ 08 июня 2019

ЕСЛИ сервер не требует аутентификации ТО не использовать SMTP AUTH.

Удалить следующую строку:
server.login(user, pwd)

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