我的知识记录

Python使用163邮箱SMTP发送邮件 完整配置

Python通过网易163邮箱SMTP发邮件,配置smtp.163.com:465、开启SMTP服务、获取客户端授权码,附完整代码与535认证失败排查。

场景痛点

网易163邮箱用的人多,很多人拿它做自动化通知邮箱。但163邮箱同样不支持网页密码登录SMTP,必须在后台开SMTP服务、拿客户端授权码,而且163对群发更严格,配置不对就报535。这篇把完整步骤写清楚。

用到的库

# smtplib/email标准库,无需安装

完整代码

# -*- coding: utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 163邮箱SMTP配置
SMTP_SERVER = "smtp.163.com"
SMTP_SSL_PORT = 465

# 改成你自己的163邮箱
SENDER = "yourname@163.com"
# 163邮箱的"客户端授权密码",不是网页登录密码!
AUTH_CODE = "your_client_auth_password"
RECEIVER = "receiver@example.com"


def send_via_163():
msg = MIMEText("你好,这是通过163邮箱SMTP发出的测试邮件。", "plain", "utf-8")
msg["From"] = Header(f"我的163邮箱 <{SENDER}>", "utf-8")
msg["To"] = Header(RECEIVER, "utf-8")
msg["Subject"] = Header("163邮箱SMTP测试", "utf-8")

server = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_SSL_PORT)
server.login(SENDER, AUTH_CODE)
server.sendmail(SENDER, [RECEIVER], msg.as_string())
server.quit()
print("163邮箱邮件发送成功")


if __name__ == "__main__":
send_via_163()

代码讲解

  • 163邮箱SMTP服务器固定为 smtp.163.com,推荐端口465(SSL)。
  • 163还有其他域名邮箱,服务器要跟着换:
  • xxx@163.comsmtp.163.com
  • xxx@126.comsmtp.126.com
  • xxx@yeah.netsmtp.yeah.net
  • 授权码怎么拿: 1. 登录163邮箱网页版,点顶部"设置"→"POP3/SMTP/IMAP"。 2. 开启"SMTP服务",按提示绑定手机发短信验证。 3. 验证后会生成一串客户端授权密码,复制下来填到代码。
  • 163的授权码长度比QQ邮箱长,大小写敏感,别复制错。

运行结果

控制台打印"163邮箱邮件发送成功",收件人邮箱收到来自你的163邮箱的邮件。

注意事项

  • 163邮箱对发信频率管控比QQ更严,短时间发几十封就可能临时限制,群发建议每封间隔1秒以上。
  • 163免费邮箱每天发信上限约200封,超过会被冻结SMTP服务一段时间。
  • 535 Error: authentication failed基本就是授权码错了或者SMTP服务没开启。
  • 163邮箱发出去的邮件进对方垃圾箱概率不低,建议在正文里写清楚发件人身份、别用全大写主题、别放一堆链接。
  • 126、yeah.net的代码完全一样,只改SMTP_SERVER和发件人地址即可。

Python使用163邮箱SMTP发送邮件 完整配置

标签:

更新时间:2026-09-14 21:14:33

上一篇:Python批量删除垃圾邮件 imaplib清理收件箱

下一篇:Python批量打包发送文件夹:zip后自动发送邮件附件