鱼C论坛

 找回密码
 立即注册
查看: 54|回复: 2

Pyton_flask练习写一个BBS中遇到问题求帮助-邮件发送功能实现

[复制链接]
发表于 昨天 23:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在本地网页中报错如下所示:
SMTPServerDisconnected
smtplib 的SMTPServerDisconnected:连接意外关闭
——————————————————————————————————————————
1.配置在config.py里面;
2.mail=Mail()写在exts.py里面;
3.app.py里导入二个模块from exts import db,mail,import config并且在app.py文件里写了mail.init_app(app);
4.在auth.py文件里也导入了from flask_mail import Message,from exts import mail二个模块


app.py文件代码如下:
from flask import Flask,request
import config
from exts import db,mail
from blueprints.qa import bp as qa_bp
from blueprints.auth import bp as auth_bp
from  flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from models import UserModel
app = Flask(__name__)

app.config.from_object(config)#绑定配置文件
db.init_app(app)

mail.init_app(app)
migrate=Migrate(app,db)
app.register_blueprint(qa_bp)
app.register_blueprint(auth_bp)


if __name__ == '__main__':
    app.run(debug=True)

config.py文件代码如下:

#数据库的配置信息
HOSTNAME='127.0.0.1'
PORT='3306'
DATABASE='zhiliaooa'
USERNAME='root'
PASSWORD='root'
DB_URI='mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
SQLALCHEMY_DATABASE_URI=DB_URI



#邮箱配置

MAIL_SERVER='smtp.qq.com'
MAIL_USE_SSL='True'
MAIL_PORT='465'#端口号
MAIL_USERNAME='739943375@qq.com '#邮箱账号
MAIL_PASSWORD='abcbkgmdcyxzbdej'#开启SMTP服务时生成的授权码
NAIL_DEFAULT_SENDER='739943375@qq.com '#邮箱账号

exts.py文件代码如下:
#这个文件存在的意义就是为了解决循环引用的问题
from flask_sqlalchemy import SQLAlchemy
from flask_mail import Mail

db=SQLAlchemy()
mail=Mail()

blueprints下auth.py文件代码如下:
from  flask import Blueprint,render_template
from flask_mail import Message
from exts import mail
bp=Blueprint('auth',__name__,url_prefix='/auth')

@bp.route('/login')
def login():
    return  render_template('login.html')

@bp.route('/register')
def register():
    return  render_template('register.html')

@bp.route('/mail/test')
def mail_test():

    message=Message(subject='邮箱测试',recipients='dunmutangxqt@sohu.com',body='这是一条测试邮件')
    mail.send(message)

    return '邮件发送成功!'
有知道解决办法的大佬帮助小白一下,谢谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 23:12 | 显示全部楼层
根据你的代码和报错信息,问题主要出在配置文件和邮件发送格式上。以下是修改建议:

1. 修复配置文件(config.py)问题:

  1. # 邮箱配置
  2. MAIL_SERVER = 'smtp.qq.com'
  3. MAIL_USE_SSL = True  # 布尔值去掉引号
  4. MAIL_PORT = 465      # 端口号改为整数类型
  5. MAIL_USERNAME = '739943375@qq.com'  # 去掉尾部空格
  6. MAIL_PASSWORD = 'abcbkgmdcyxzbdej'
  7. MAIL_DEFAULT_SENDER = '739943375@qq.com'  # 修正变量名拼写
复制代码


2. 修改邮件发送格式(auth.py):

  1. @bp.route('/mail/test')
  2. def mail_test():
  3.     # recipients必须使用列表格式
  4.     message = Message(
  5.         subject='邮箱测试',
  6.         recipients=['dunmutangxqt@sohu.com'],  # 关键修改:用方括号包裹
  7.         body='这是一条测试邮件'
  8.     )
  9.     mail.send(message)
  10.     return '邮件发送成功!'
复制代码


3. 其他注意事项:
o 确保已开启QQ邮箱SMTP服务(登录QQ邮箱→设置→账户→开启POP3/SMTP)
o 检查防火墙是否阻止了465端口
o 尝试在终端直接测试SMTP连接:

  1. import smtplib
  2. server = smtplib.SMTP_SSL('smtp.qq.com', 465)
  3. server.login('739943375@qq.com', 'abcbkgmdcyxzbdej')
  4. server.quit()
复制代码


修改后如仍有问题,建议在发送邮件时添加超时设置:

  1. mail = Mail()
  2. mail.suppress = True  # 在exts.py中添加此配置
复制代码


重要提示:请立即修改邮箱授权码,你当前粘贴的MAIL_PASSWORD已暴露在公开代码中!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 17 小时前 | 显示全部楼层
遇到的 SMTPServerDisconnected: 连接意外关闭 错误,通常和 邮箱配置错误、服务器连接问题 或 使用方式问题 有关。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-14 18:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表