使用Golang的gomail库添加MP4附件发邮件时连接被强制关闭求助
解决Gomail发送MP4附件时连接被强制断开的问题
排查方向与解决方案
1. 检查文件大小是否超出SMTP服务器限制
从报错IP判断你使用的是Gmail SMTP服务,它默认限制单邮件(含附件和正文)最大25MB。如果video.mp4超过这个阈值,服务器会直接断开连接。
- 处理方式:查看文件大小,若超限,要么压缩视频体积,要么将视频上传到云存储,在邮件正文中插入分享链接替代直接附件。
2. 延长SMTP连接超时时间
大文件上传耗时较长,容易触发服务器的连接超时限制。给Dialer设置更长的超时:
d := gomail.NewDialer(SmtpHost, SmtpPort, From, PswFrom) // 设置30秒超时,可根据文件大小调整 d.Timeout = 30 * time.Second
3. 启用分块传输编码
大文件一次性发送可能被服务器拦截,手动开启分块编码可拆分数据传输:
在创建邮件消息后添加:
m.SetHeader("Content-Transfer-Encoding", "chunked")
4. 验证Gmail账户的安全设置
如果使用Gmail SMTP,需确认:
- 若账户开启了两步验证,必须使用应用专用密码登录SMTP,不能用原账户密码
- 若未开启两步验证,需确保账户允许“不太安全的应用访问”(部分旧账户支持,新账户可能需改用应用密码)
- 查看Google账户安全日志,确认SMTP连接未被安全机制拦截
5. 更换支持大附件的SMTP服务
如果以上方法都无效,可改用SendGrid、Mailgun等第三方邮件服务,它们通常支持更大的附件(比如SendGrid单邮件上限30MB),且对大文件传输的兼容性更好。
内容的提问来源于stack exchange,提问作者Francesco Bassignana
相关产品推荐
相关产品推荐

