TYPO3 10.4.17 表单EmailFinisher提交后重复发送两封相同邮件问题求助
TYPO3 10.4.17表单重复发送邮件解决方案
从你提供的fileadmin/form_definitions/testform.form.yaml配置来看,仅配置了1个EmailToReceiver完成器,可直接排除配置重复导致的问题,以下是可行的修复方案:
优先修复方案
TYPO3 10.4.17存在官方确认的表单完成器重复执行的核心BUG,直接将TYPO3核心升级到10.4系列最新的LTS版本即可解决,这是成本最低、兼容性最好的修复方式。
暂无法升级核心时的备选方案
- 排查自定义逻辑冲突
检查站点是否安装了第三方表单增强扩展,或者自主开发了表单提交相关的Hook、PSR-14事件监听器,临时禁用所有自定义表单相关逻辑后测试提交,定位是否是额外触发逻辑导致的重复发送。 - 增加前端防重复提交逻辑
给表单提交按钮添加点击后禁用的JS逻辑,避免用户双击、页面卡顿导致的重复提交,参考代码如下:document.addEventListener('DOMContentLoaded', function() { const targetForm = document.querySelector('form[data-form-identifier="testform"]'); if (targetForm) { targetForm.addEventListener('submit', () => { const submitBtn = targetForm.querySelector('button[type="submit"]'); if (submitBtn) submitBtn.disabled = true; }); } }); - 增加邮件完成器幂等校验
自定义重写EmailToReceiver完成器逻辑,基于表单提交的唯一请求标识做缓存,第一次发送邮件后将标识存入TYPO3缓存框架,后续触发时如果缓存中已有对应标识则直接跳过发送,缓存有效期可设置为1小时。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

