配阿里云邮箱的 SMTP,多数人卡住的地方集中在三处:服务器地址写错、端口和加密方式对不上,以及密码用了登录密码而不是授权码。下面按实际操作的顺序讲,每一步都说明原因,报错时可以对照着定位。

先在后台打开SMTP服务
有的账号默认没有开放客户端收发。先登录邮箱管理后台(企业邮箱)或个人邮箱的设置页面,找到客户端相关选项,确认POP3、SMTP、IMAP服务处于开启状态。这一步很容易漏掉。参数都照着填了,却一直提示认证失败,原因往往就是服务没开。
接下来生成客户端专用的授权码。部分账号的设置里有“客户端密码”或“授权码”的入口,生成后把它当作SMTP密码使用。这样即使密码被存进某个软件的配置里,也不会暴露邮箱的登录密码。不需要时,在同一个入口撤销即可,无需修改登录密码。
记住这组参数
阿里云邮箱的SMTP参数大致如下。服务地址偶尔会随产品调整,动手前请对照官方帮助中心的最新说明。
- SMTP服务器地址:企业邮箱填 smtp.qiye.aliyun.com,个人邮箱常用 smtp.aliyun.com。
- 端口和加密:465 搭配 SSL,或者 587 搭配 STARTTLS,两者只选一组。
- 用户名:完整的邮箱地址,例如 name@yourdomain.com。不要只写前缀。
- 密码:邮箱登录密码,或者上一步生成的客户端授权码。
端口和加密方式必须成对使用,这是最容易踩的坑。465 是隐式 SSL,连接一开始就是加密的。587 走显式的 STARTTLS,先建立普通连接,再升级为加密。如果选了 465,软件里却勾上了 STARTTLS,连接通常会超时或握手失败,反过来也一样。遇到这种情况,先检查端口和加密选项,再考虑改密码。
用Python先做一次真实发送
图形界面软件里配置失败时,提示往往很笼统,很难分辨是网络问题、端口问题还是账号问题。建议先用几行代码验证连通性。Python 标准库就能完成,不需要额外安装包。下面的示例从环境变量读取授权码,避免把敏感信息写进代码或提交到仓库。
import os
import smtplib
from email.mime.text import MIMEText
from email.header import Header
SMTP_HOST = "smtp.qiye.aliyun.com"
SMTP_PORT = 465
SENDER = "name@yourdomain.com"
PASSWORD = os.environ["MAIL_SMTP_PASSWORD"] # 从环境变量读取授权码
RECEIVER = "test@example.com"
msg = MIMEText("这是一封通过阿里云邮箱SMTP发送的测试邮件。", "plain", "utf-8")
msg["Subject"] = Header("SMTP连通性测试", "utf-8")
msg["From"] = SENDER
msg["To"] = RECEIVER
try:
with smtplib.SMTP_SSL(SMTP_HOST, SMTP_PORT, timeout=10) as server:
server.login(SENDER, PASSWORD)
server.sendmail(SENDER, [RECEIVER], msg.as_string())
print("发送成功")
except smtplib.SMTPAuthenticationError:
print("认证失败:检查用户名是否为完整邮箱,密码是否为授权码")
except smtplib.SMTPException as e:
print(f"SMTP错误:{e}")
except OSError as e:
print(f"网络错误:检查端口和服务器地址,当前错误:{e}")
运行前在终端设置环境变量。Linux 或 macOS 执行 export MAIL_SMTP_PASSWORD=你的授权码,Windows PowerShell 执行 $env:MAIL_SMTP_PASSWORD="你的授权码"。脚本输出“发送成功”后,去收件箱和垃圾箱各看一眼,确认邮件到达。这说明服务器、端口、账号和密码都没有问题。之后在其他软件里配置,照着同样的参数填即可。
常见报错怎么判断
多数报错可以按下面的思路排查。
- 535 认证失败:依次确认三点。用户名是完整邮箱,密码填的是授权码而不是登录密码,SMTP 服务已在后台开启。
- 连接超时:多半是端口和加密方式不匹配,也可能是当前网络屏蔽了对应端口。换一组端口与加密组合再试。仍然不通,就换一个网络环境测试。
- 发件人地址不匹配:邮件头里的 From 必须是当前账号,或者已在后台设置为可用的别名。否则邮件可能被拒收,或直接进入垃圾箱。
- 发送频率受限:短时间内大量发送会触发限流。批量发信应放进队列并设置发送间隔,不要用循环一次性发完。
系统邮件的送达建议
SMTP 常用于验证码、订单通知、告警等系统邮件。这类邮件对送达率很敏感,所以配置调通之后,还要在阿里云控制台为发信域名配置 SPF、DKIM 和 DMARC 记录。这些记录的作用是让收件方确认邮件确实来自你的域名。配置完成后,用邮件测试工具检查一次,确认三项记录都已生效。
密码和授权码不要写进代码仓库,也不要通过聊天工具发给同事。团队协作时,可以统一放进密钥管理服务或部署平台的环境变量里。换人负责时,只需撤销对应的授权码,不必修改邮箱登录密码。
小结
归结起来,阿里云邮箱的 SMTP 配置就三步:打开服务,填对服务器和用户名,让端口与加密成对。遇到问题时,先用脚本验证,再回到图形界面检查设置,排查会快很多。换项目或换服务器时,按这套流程走,也能较快完成配置。