Skip to content

Fix multi-recipient email delivery and SMTP cleanup - #118

Open
ai-yang wants to merge 1 commit into
UFund-Me:mainfrom
ai-yang:agent/fix-email-recipients
Open

Fix multi-recipient email delivery and SMTP cleanup#118
ai-yang wants to merge 1 commit into
UFund-Me:mainfrom
ai-yang:agent/fix-email-recipients

Conversation

@ai-yang

@ai-yang ai-yang commented Jul 31, 2026

Copy link
Copy Markdown

Description

  • 移除收件人循环内的提前返回,逐一发送全部地址。
  • 仅在全部发送成功且 SMTP quit() 成功后返回 True
  • 连接、TLS、登录或发送失败时尝试关闭已创建连接,同时保留原始异常。
  • 将现有真实邮件测试改为 7 条纯 mock 回归测试,不访问网络。

Motivation and Context

原实现位于收件人循环内的 return True 使多收件人列表只发送首位地址,并绕过正常路径的 server.quit()。连接、登录或发送发生异常时也没有可靠的清理路径,可能泄漏 SMTP 连接,同时向调用者错误表示全部发送成功。

Related issue: none. 上游当前限制此账号创建 Issue(GitHub API 返回 403),因此复现、根因和测试信息完整记录在本 PR 中。

How Has This Been Tested?

  • pytest -q tests/test_send_email.py:7 passed
  • python -m unittest -q tests.test_send_email:连续 3 次通过
  • python -m py_compile utils/send_email.py tests/test_send_email.py
  • flake8 --select=E9,F63,F7,F82 utils/send_email.py tests/test_send_email.py
  • git diff --check origin/main...HEAD

测试使用 fake SMTP,覆盖两个收件人、正常关闭、发送/登录/TLS/连接失败时关闭、quit 失败不覆盖原异常,以及空收件人不创建连接。

全仓 compileall 当前仍会报告数据工具非法方法签名和期货示例 Python 2 语法;两者均存在于上游基线、不由本 PR 引入,并已拆分为独立修复。

未运行模板中提到的裸全仓 pipeline 测试:当前仓库部分测试包含联网、真实邮件、交易入口或无限循环风险。本 PR 的回归测试全部离线执行。

Types of changes

  • Fix bugs
  • Add new feature
  • Update documentation

@sonarqubecloud

Copy link
Copy Markdown

@ai-yang
ai-yang marked this pull request as ready for review July 31, 2026 15:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant