搜索
bottom↓
回复: 18

关于uip1.0 的smtp及一些问题

[复制链接]

出0入0汤圆

发表于 2009-3-30 23:15:10 | 显示全部楼层 |阅读模式
最近在ATmega32上移植uip1.0成功。
想用smpt和pop协议实现一个email客户端,但是发现uip1.0的smtp.c 和smtp.h被作者重写了(相对uip0.9),用protothread完成了smtp。但是,发现有问题啊(我没看protothread源代码),smtp.h和smtp.c好像不一致,有些数据结构都不一样啊,貌似smtp.h还停留在0.9版本的样子。没办法了,只能用0.9的smtp了。

不幸地是,还是遇到了问题,邮件发不出去啊。用周立功的TCP&UDPDebug进行了调试,将PC的25端口模拟成邮件服务器,用开发板连接PC的25端口,用smtp的NVT_ASCII码进行命令调试,出现了的问题是FROM;后的邮件地址(例如:<lionheart117@sina.com>)会错误的显示为<lio? nheart117@sina.com>。换成真实的邮件服务器后,邮件发不出去。

不知道问题是不是因为FROM:后的邮件地址错误导致的,但是阅读源代码,没有任何问题(移植的代码,没有改动过)。而且FROM:后的字段是邮件的内容,不是信封,所以我想至少应该能发出去啊?

希望大侠们能解答一下。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2009-3-31 08:57:30 | 显示全部楼层
自己顶起来

出0入0汤圆

发表于 2009-3-31 09:16:35 | 显示全部楼层
建议自己研究一下smtp协议,这个协议不是很复杂,另外建议用真实的smtp服务器做实验,smtp服务器版本不同会有不同的响应

出0入0汤圆

 楼主| 发表于 2009-3-31 10:00:36 | 显示全部楼层
没有其他的方法了吗?
那么smtp服务器怎么搭建呢?

出0入0汤圆

 楼主| 发表于 2009-3-31 20:54:36 | 显示全部楼层
终于解决了。

方法:先自学了通过fdevopen函数指定I/O流,因为在uip0.9的smtp.c中有很多作者保留的printf,将I/O绑定到usart上进行DEBUG。发现邮件服务器发来的信息有50多byte,但是由于我设置的uIP buffer size太小了(我设为100),只能盛下46byte(Ethernet+IP+TCP头=54byte),其余的只能下一次显示,由于smtp用的是NVT_ASCII方式的命令(实际命令是开头的三位数),出现了命令的误解情况,导致无法识别命令一直等待,直到邮件服务器认为操作超时。

解决方法:将uIP buffer size设为150。

出0入0汤圆

 楼主| 发表于 2009-3-31 21:12:46 | 显示全部楼层
仔细想想,不对。根据TCP/IP协议,如果大于接收窗口的数据应该做丢弃处理,可能是我的底层驱动写的有问题。

出0入0汤圆

发表于 2010-4-25 09:16:15 | 显示全部楼层
楼主你好,我最近也在用UIP做STMP的客户端,用的事UIP1.0,STMP.c和stmp.h是不太符合,数据结构有问题,我想问下楼主,UIP0.9的STMP能在UIP1.0上用吗?还想问下楼主,你使用了STMP只有能不能用单片机直接给手机邮箱或者163邮箱发邮件的?

出0入0汤圆

发表于 2010-4-25 10:46:00 | 显示全部楼层
关注

出0入0汤圆

发表于 2010-4-27 17:48:57 | 显示全部楼层
再顶

出0入0汤圆

发表于 2010-4-29 10:23:14 | 显示全部楼层
继续顶

出0入0汤圆

发表于 2010-4-29 11:52:19 | 显示全部楼层
这么小的BUFFER就不怕包被DROP掉。况且BASE64后数据会变大的。不过个人认为没有并发连接,建议不要这么个大IP栈。

出0入0汤圆

发表于 2010-5-1 10:50:45 | 显示全部楼层
我用的单片机是STM32开的BUFFER是1502字节的,不用担心这个,我只是关心,这个SMTP能不能发邮件到普通的邮箱里,比如163,126等邮箱或者手机邮箱

出0入0汤圆

发表于 2010-5-3 09:47:54 | 显示全部楼层
发邮件stm32一点问题没有。你还可以来一段精彩的<html><head><title>....</title></head><body>........</body></html>。
记得要用身份验证。密码要用base64处理。否则这些个smtp不认。

出0入0汤圆

发表于 2010-5-3 16:31:09 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-9-21 11:37:18 | 显示全部楼层
顶!希望能开源!学习学习!

出0入0汤圆

发表于 2012-5-10 19:23:46 | 显示全部楼层
顶!学习!希望能够开源!

出0入0汤圆

发表于 2012-12-16 22:10:16 | 显示全部楼层
robustman 发表于 2010-5-3 09:47
发邮件stm32一点问题没有。你还可以来一段精彩的............。
记得要用身份验证。密码要用base64处理。否 ...

楼主,您好:小弟在移植uip0.9时使用smtp源码来发邮件时,不知能给网易的邮箱发邮件吗?

出0入0汤圆

发表于 2012-12-16 22:11:16 | 显示全部楼层
lionheart117 发表于 2009-3-31 20:54
终于解决了。

方法:先自学了通过fdevopen函数指定I/O流,因为在uip0.9的smtp.c中有很多作者保留的printf ...

楼主,是否能给个思路,如何调试SMTP,最近在搞这个很难想的通。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 04:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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