发送邮件SMTP发送大附件问题

yurjiang 2009-02-09 09:57:14
用MFC写的代码,参照协议是ESMTP和MIME,向163发送超过50K的附件时,总失败。

现象:
1 可以发送小于50K的附件,服务器最后返回MAIL OK 250
2 发送超过50K的附件时,当发送完数据后,服务器返回 421 read data from client error

目前查到的可能与发送失败有关系的相关方向。
1 防火墙问题。关闭卡巴斯基后,原来 用于接收”421 read data from client error“的receive()函数运行会崩掉程序。
2 MTU问题。有资料说出口PC的MTU应小于出口网关的MTU,否则大数据包会丢掉。对此,措施如下:一,修改减小PC的MTU;二改善程序,当发大附件时,分包发送,使每包长度小于512。但是均无效。


可以排除的问题点:
1 base64编码没问题,我验算过了。


请各位高手赐教。
源头代码比较长,不好贴,各位高手可以说说自己发大附件时遇到的关键点问题。

我的QQ是55967122,EMAIL是yurjiang@163.com.我们联系时我把源代码发给你们,你们指点指点交流一下,好么?
...全文
1800 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengbaogen 2012-03-15
  • 打赏
  • 举报
回复
楼上的邻居们,这个问题你们解决了吗?我现在也遇到这问题了,请指教一二,我的QQ:382564277。
ynwxl 2009-07-05
  • 打赏
  • 举报
回复
想学习,帮顶
sonic123 2009-07-01
  • 打赏
  • 举报
回复
帮顶,我在手机上开发,但遇到的情况和楼主一样,也是不能超过50k,返回的错误也是一样的。还未解决,请高手指教!
kenny2009 2009-06-25
  • 打赏
  • 举报
回复
应该是smtp服务器对邮件发送程序的限制。
我用公司的smtp服务器就没有任何附件限制。
xgxzj 2009-06-11
  • 打赏
  • 举报
回复
我也遇到这样的问题 我是用php5.28写的,用的是fsockopen下fwrite函数发数据。当我用163的账号给自己发送时fwrite函数不能一次性把所有的数据都发出去。
不过当我用公司的账号发给自己是能收到,但是163还是不能收到,系统退信就是写着421 read data from client error
lidatong 2009-04-12
  • 打赏
  • 举报
回复
我也遇到这个问题,望高手解答
deitel85 2009-04-07
  • 打赏
  • 举报
回复
很高深的问题,UP
kenny2009 2009-03-20
  • 打赏
  • 举报
回复
帅哥有啥解决办法没?我也遇到了相同的问题。
sizemismatch 2009-02-10
  • 打赏
  • 举报
回复
友情up
yurjiang 2009-02-09
  • 打赏
  • 举报
回复
修改一下现象1:
1 防火墙问题。关闭卡巴斯基后,原来 用于接收”421 read data from client error“的receive()函数返回-1。
GetLastError()返回的错误码为10053,意思为:“在連接建立後,當有某種原因導致TCP/IP協定核心不斷地重送資料,而且都重送失敗的時候,TCP/IP協定將連接中斷。此時,應用程式就會收到WSACONNABORTED這個錯誤“。
原因是我将大附件分包发送,每包512字节,分的包数量过大,导致问题出现。
后将512改为4096,发送接收TCP数据正常,但是仍然发邮件不成功,还是返回”421 read data from client error“

5,658

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧