Python smtplib发送邮件报错SMTP AUTH extension not supported求解决方案
问题解决方法
你的代码存在几个关键问题,对应解决办法如下:
1. 错误匹配SMTP服务器
你使用的是Gmail邮箱,但连接的是Yahoo的SMTP服务器,两者不兼容。Gmail官方SMTP服务器地址为smtp.gmail.com,对应端口用587(TLS加密)或465(SSL加密)。
2. 未启用加密连接
当前主流邮件服务器均要求加密传输,直接裸连SMTP会被拒绝认证,必须启用TLS或SSL加密协议。
3. 邮件内容不完整
sendmail方法需要完整的邮件头(主题、收发件人)和正文内容,否则会被服务器拦截或无法正常投递。
修正后的代码示例
方式一:TLS加密(端口587)
import smtplib from email.message import EmailMessage # 配置账号信息 sender_email = "smtpsender1001@gmail.com" app_password = "ksarvsqstghnvbou" # 需确保是Gmail两步验证生成的App密码 receiver_email = "smtpsender1001@gmail.com" # 构建完整邮件 msg = EmailMessage() msg["From"] = sender_email msg["To"] = receiver_email msg["Subject"] = "Python测试邮件" msg.set_content("这是通过Python脚本发送的测试邮件内容") # 发送邮件(用with语句自动管理连接) with smtplib.SMTP("smtp.gmail.com", 587) as connection: connection.starttls() # 启用TLS加密 connection.login(user=sender_email, password=app_password) connection.send_message(msg)
方式二:SSL加密(端口465)
import smtplib from email.message import EmailMessage sender_email = "smtpsender1001@gmail.com" app_password = "ksarvsqstghnvbou" receiver_email = "smtpsender1001@gmail.com" msg = EmailMessage() msg["From"] = sender_email msg["To"] = receiver_email msg["Subject"] = "Python测试邮件" msg.set_content("测试内容") with smtplib.SMTP_SSL("smtp.gmail.com", 465) as connection: connection.login(user=sender_email, password=app_password) connection.send_message(msg)
额外注意事项
- 必须确保你的Gmail账号已开启两步验证,只有生成的App密码才能通过SMTP认证,普通登录密码无法使用。
- 若仍报错,检查Gmail账号的"不安全应用访问"是否处于关闭状态(当前Gmail默认关闭,必须依赖App密码登录)。
内容的提问来源于stack exchange,提问作者santino larris
相关产品推荐
相关产品推荐

