收到错误消息:服务器Python3不支持SMTP AUTH扩展

时间:2019-06-08 06:00:38

标签: python python-3.x smtp

当我使用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 个答案:

答案 0 :(得分:1)

如果服务器不需要身份验证,之后不使用SMTP AUTH。

删除以下行:
server.login(user, pwd)

答案 1 :(得分:1)

嗨,我不确定是为什么它不起作用,但是我有几件事可以检查。

  • 服务器= smtplib.SMTP('10 .10.9.9:25')
    ip:port字符串中有空格,请尝试将其删除。

  • ip:port组合似乎来自私有LAN地址
    尝试ping此地址以查看是否可以访问该地址,如果不能再与网络中使用给定ip的计算机的处理人员进行对话。

    如果可以ping ip,则可能是给定端口上的SMTP服务器不可用,在这种情况下,也请联系负责管理IP地址为10.10.9.9

    的计算机的人员。

    在终端上使用给定命令
    ping 10.10.9.9


  • 在登录和发送邮件之前,还应该使用connect()连接到服务器,正确的顺序应该是

    服务器= smtplib.SMTP('10 .10.9.9:25')
    server.starttls()
    server.connect('10 .10.9.9',465)
    server.login(user,pwd)
    server.sendmail(用户,收件人,msg.as_string())
    server.close()

465是SMTP服务器的默认端口

谢谢,
让我知道它是否对您有帮助!