使用Python通过Aruba邮箱发送邮件时遭遇错误10061
Aruba邮箱SMTP连接错误(10061)成因分析及修复方案
错误成因
- 端口逻辑冲突+协议不匹配:你先通过
smtplib.SMTP('smtps.aruba.it', 25)尝试连接25端口,随后又调用connect("smtps.aruba.it", 465),导致连接逻辑混乱。另外Aruba的465端口是隐式SSL端口,需要用SMTP_SSL类初始化连接,而非SMTP+starttls组合(后者对应587端口的显式TLS协议)。 - 25端口被拦截/封禁:错误提示明确是连接25端口时被目标主机主动拒绝(10061是Windows系统下的“目标端口未开放/拒绝连接”错误码)。目前多数邮件服务商(包括Aruba)会封禁25端口的客户端连接请求来防范垃圾邮件,你的网络服务商(ISP)也可能屏蔽了25端口。
- Django配置拼写错误:
setting.py里的EMAUL_USE_TLS是笔误,正确应为EMAIL_USE_TLS——不过你当前的发送代码未使用Django邮件模块,所以这个错误暂时不影响,但后续切换到Django发送时会出问题。
修复后的代码示例
方案1:使用465端口(隐式SSL)
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication msg = MIMEMultipart() msg['Subject'] = 'subject' msg['From'] = '你的Aruba邮箱地址' msg['To'] = '收件人邮箱地址' # 添加附件 xlsx = MIMEApplication(open(str(newFilePath), 'rb').read()) xlsx.add_header('Content-Disposition', 'attachment', filename=str(newFileName)) msg.attach(xlsx) # 直接用SMTP_SSL连接465端口 server = smtplib.SMTP_SSL('smtps.aruba.it', 465) server.login('你的Aruba邮箱地址', "邮箱密码") server.sendmail('你的Aruba邮箱地址', '收件人邮箱地址', msg.as_string()) server.quit()
方案2:使用587端口(显式TLS)
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication msg = MIMEMultipart() msg['Subject'] = 'subject' msg['From'] = '你的Aruba邮箱地址' msg['To'] = '收件人邮箱地址' # 添加附件 xlsx = MIMEApplication(open(str(newFilePath), 'rb').read()) xlsx.add_header('Content-Disposition', 'attachment', filename=str(newFileName)) msg.attach(xlsx) # 连接587端口后启用TLS加密 server = smtplib.SMTP('smtps.aruba.it', 587) server.ehlo() server.starttls() server.ehlo() server.login('你的Aruba邮箱地址', "邮箱密码") server.sendmail('你的Aruba邮箱地址', '收件人邮箱地址', msg.as_string()) server.quit()
内容的提问来源于stack exchange,提问作者Alessio Scalzo
相关产品推荐
相关产品推荐

