You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI使用fastapi-mail发邮件遇TypeError:NoneType无法转int求助

解决FastAPI使用fastapi-mail时MAIL_PORT为None的错误

错误原因

报错TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'说明os.getenv('MAIL_PORT')返回了None,核心问题是程序未正确读取到.env文件中的配置,同时代码存在拼写错误:

  1. .env文件路径配置错误,导致环境变量加载失败
  2. Envs类中MAIL_FROM_NAME的读取变量名写错(写成了MAIN_FROM_NAME)

解决方案

1. 修复.env文件加载路径

修改send_email.py中的load_dotenv调用,使用绝对路径确保能找到根目录的.env文件:

import os
from dotenv import load_dotenv

# 获取当前文件目录,拼接根目录的.env路径
current_dir = os.path.dirname(os.path.abspath(__file__))
env_path = os.path.join(current_dir, '.env')
load_dotenv(env_path)

2. 修正变量名拼写错误

修改Envs类中的MAIL_FROM_NAME读取代码:

class Envs:
    MAIL_USERNAME = os.getenv('MAIL_USERNAME')
    MAIL_PASSWORD = os.getenv('MAIL_PASSWORD')
    MAIL_FROM = os.getenv('MAIL_FROM')
    MAIL_PORT = int(os.getenv('MAIL_PORT'))
    MAIL_SERVER = os.getenv('MAIL_SERVER')
    MAIL_FROM_NAME = os.getenv('MAIL_FROM_NAME')  # 修正拼写错误

3. 验证环境变量加载(可选)

在load_dotenv后添加测试代码,确认配置是否读取成功:

print(os.getenv('MAIL_PORT'))  # 正常应输出587,而非None

完整修正后的send_email.py核心片段

import os
from fastapi import BackgroundTasks
from fastapi_mail import FastMail, MessageSchema, ConnectionConfig
from dotenv import load_dotenv

# 正确加载.env文件
current_dir = os.path.dirname(os.path.abspath(__file__))
env_path = os.path.join(current_dir, '.env')
load_dotenv(env_path)

class Envs:
    MAIL_USERNAME = os.getenv('MAIL_USERNAME')
    MAIL_PASSWORD = os.getenv('MAIL_PASSWORD')
    MAIL_FROM = os.getenv('MAIL_FROM')
    MAIL_PORT = int(os.getenv('MAIL_PORT'))
    MAIL_SERVER = os.getenv('MAIL_SERVER')
    MAIL_FROM_NAME = os.getenv('MAIL_FROM_NAME')

conf = ConnectionConfig(
    MAIL_USERNAME=Envs.MAIL_USERNAME,
    MAIL_PASSWORD=Envs.MAIL_PASSWORD,
    MAIL_FROM=Envs.MAIL_FROM,
    MAIL_PORT=Envs.MAIL_PORT,
    MAIL_SERVER=Envs.MAIL_SERVER,
    MAIL_FROM_NAME=Envs.MAIL_FROM_NAME,
    MAIL_TLS=True,
    MAIL_SSL=False,
    USE_CREDENTIALS=True,
    TEMPLATE_FOLDER='./templates/'
)

# 后续邮件发送函数代码不变

内容的提问来源于stack exchange,提问作者Po_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 13:17:36