Python代码发送邮件遇[Errno 99]错误,求可行解决步骤
解决Python发送邮件时[Errno 99] Cannot assign requested address错误的具体步骤
错误原因
该错误是因为本地机器未运行SMTP服务器,或者localhost的SMTP服务未正常监听端口,导致无法建立连接。
解决方案步骤
方案一:使用第三方邮箱SMTP服务(以Gmail为例)
这是最常用的解决方式,无需搭建本地服务:
步骤1:确认邮箱SMTP配置
Gmail的SMTP服务器地址为smtp.gmail.com,推荐使用587端口(TLS加密)。若开启了两步验证,需生成应用专用密码;未开启则需在Gmail后台允许“不太安全的应用访问”。步骤2:修改代码配置SMTP连接
替换原代码中的本地SMTP连接逻辑,添加认证和加密步骤:import smtplib from email.message import EmailMessage msg = EmailMessage() msg.set_content("Hello") msg['Subject'] = 'test mail' msg['From'] = 'personnal.mail@gmail.com' msg['To'] = 'personnal.mail@gmail.com' # 连接Gmail SMTP服务并发送 with smtplib.SMTP('smtp.gmail.com', 587) as smtp_server: smtp_server.starttls() # 启用TLS加密 smtp_server.login('personnal.mail@gmail.com', '你的邮箱密码/应用专用密码') smtp_server.send_message(msg)步骤3:测试运行
执行修改后的代码,检查邮箱收件箱是否收到测试邮件。若报错,优先排查密码正确性、SMTP权限是否开启。
方案二:搭建本地SMTP服务器(仅用于测试)
适合不需要真正发送邮件,仅验证代码逻辑的场景:
步骤1:启动本地调试SMTP服务器
在终端执行以下Python自带的命令:python -m smtpd -n -c DebuggingServer localhost:25该命令会启动一个调试服务器,不会真正投递邮件,只会在控制台打印邮件内容。
步骤2:运行原代码测试
保持你最初的代码不变,在本地服务器启动后执行代码,即可正常连接并看到邮件内容输出在终端。
内容的提问来源于stack exchange,提问作者Lucas Morin
相关产品推荐
相关产品推荐

