当我使用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")
答案 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服务器的默认端口
谢谢,
让我知道它是否对您有帮助!