![[Bug]: Can't send emails to non-authenticated server](https://www.chat-gpts.plus/wp-content/uploads/2026/07/6625-9af68ab0.jpg)
[Bug]: Can’t send emails to non-authenticated server
快速结论:当 LiteLLM 代理配置了 SMTP 邮件发送,但目标 SMTP 服务器不需要认证(如公司内部 IP 白名单服务器或端口 25 无认证服务器)时,会触发此错误。优先排查 SMTP 用户名和密码的环境变量是否被设置,如果不需要认证,则应确保这两个变量未设置。
问题场景
用户在使用 LiteLLM 代理(LiteLLM Proxy)时,配置了邮件发送功能,但目标 SMTP 服务器是一个不需要登录认证的内部邮件服务器(例如:仅通过 IP 白名单或端口 25 进行发送)。系统中,邮件发送逻辑强制要求提供 smtp_username 和 smtp_password,导致无法连接此类服务器。
报错原文
20:44:16 - LiteLLM Proxy:DEBUG: utils.py:108 - An error occurred while sending the email:SMTP AUTH extension not supported by server.
litellm-litellm-1 | Traceback (most recent call last):
litellm-litellm-1 | File "/usr/local/lib/python3.11/site-packages/litellm/proxy/utils.py", line 2494, in send_email
litellm-litellm-1 | server.login(smtp_username, smtp_password) # type: ignore
litellm-litellm-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
litellm-litellm-1 | File "/usr/local/lib/python3.11/smtplib.py", line 716, in login
litellm-litellm-1 | raise SMTPNotSupportedError(
litellm-litellm-1 | smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.
12:08:19 - LiteLLM Proxy:ERROR: utils.py:5096 - An error occurred while sending the email:(535, b'5.7.8 Error: authentication failed: (reason unavailable)')
Traceback (most recent call last):
File "/app/.venv/lib/python3.13/site-packages/litellm/proxy/utils.py", line 5083, in send_email
server.login(
~~~~~~~~~~~~^
user=smtp_username,
^^^^^^^^^^^^^^^^^^^
REDACTED,
^^^^^^^^^^^^^^^^^^^^^^^
)
^
...
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Error: authentication failed: (reason unavailable)')
原因分析
根本原因是 LiteLLM Proxy 在发送邮件时,固定调用了 server.login(smtp_username, smtp_password)(在 litellm/proxy/utils.py 的邮件发送函数中),即使 smtp_username 和 smtp_password 为空或未设置,也会执行登录操作。对于不需要认证的内部 SMTP 服务器,该登录操作会直接报错 SMTP AUTH extension not supported by server 或 Authentication failed。理想的行为应该是:只有当提供了用户名和密码时,才调用 login();否则直接发送邮件而不认证。
环境排查
- LiteLLM 版本:Issue 中提及 v1.88.1,建议确认当前版本。
- Python 版本:报错涉及 Python 3.11 和 3.13,均为标准环境。
- SMTP 服务器类型:是否为不需要认证的服务器(例如:端口 25、内部 IP 白名单)?
- 环境变量配置:检查是否错误地设置了
SMTP_USERNAME或SMTP_PASSWORD,即使不需要认证也不应留空。
解决步骤
- 确认修复版本:通过 Issue 的历史记录和仓库检查,确认 GitHub 上已经合并了修复(
if username and password的判断)。请确保使用 LiteLLM 的版本 ≥ 修复 commit 的版本。如果使用的是稳定版,建议升级到最新版本(例如 v1.90.0 或更高)。 - 不设置 SMTP 凭证:如果 SMTP 服务器不需要认证,请确保
SMTP_USERNAME和SMTP_PASSWORD环境变量未设置(或留空)。LiteLLM 读取配置时,应跳过 login 步骤。 - 检查文档/配置:查阅 LiteLLM 的官方文档,确认 SMTP 配置部分是否明确说明用户名和密码是可选的。Issue 中反馈文档中仍显示为“必填”,因此建议以文档更新为准。
- 手动修改代码(临时):如果无法升级,可参考 Issue 中的建议,找到
litellm/proxy/utils.py中的send_email函数(对应报错行),在server.login(...)调用前添加判断:if smtp_username and smtp_password: server.login(...)。
验证方法
重启 LiteLLM 代理后,触发一次邮件发送事件(例如:设置测试告警或通过接口发送邮件)。观察日志中是否不再出现 SMTP AUTH extension not supported 或 Authentication failed 错误,并确认邮件已成功发送至收件人。



