免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 863 | 回复: 0
打印 上一主题 下一主题

收EMAIL [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-27 12:26 |只看该作者 |倒序浏览

接收邮件部分


邮件接收部分采用的是标准的POP(Post Office Protocol)协议,用的是110端口,现在最新版本是pop3, pop3常用的命令根据连接时的不同状态,有:
1:授权状态:
     Use        用户名
     Pass        用户密码
     Quit        退出

2:执行状态
STAT        信箱状态
LIST         显示编号为msg的信件的长度
RETR         取编号为msg的信件

过程为:
1:    得到服务器地址
2:   连接服务器
3:   从服务器取得连接成功的信息
4:   先发三个命令,分别是 USER  PASS STAT  从STAT命令返回信息中取得邮件数目。
5:    对每一个命令都根据其返回结果来确定是否做下一步的操作
6:    对LIST RETR命令分开处理,因为对于LIST RETR 命令,返回的信息由很多行组成.
7:    最后发送QUIT退出

函数说明:
1;int judgeReply(char *buf,int n)
判断邮件服务器应答内容,保证整个pop3工作流程的正确.
  
在发送邮件部分有二个文件,一个收邮件的文件,另一个就是处理附件的文件,其中接收邮件部分是,我们从邮件服务器中下载一封邮件,并以文件的形式保存起来,保存起来后,我们就可以利用另一个程序,来处理这个mail文件,取得附件内容,附件肉容是经过base64编码过的,所以这里有个base64解码的过程。

解码原理:将4个字节转换成3个字节.
            先读入4个6位(用或运算),每次左移6位,再右移3次,每次8位.这样就还原了.
在mail 文件中提出来附件的方法是,找到与字符串“Content-Disposition: attachment;
filename“匹配的,从这个地方下面就是附件了,当然还要把文件名给取出来,

主要函数:
void jmail_mail(char *ff)   
  ff为mail文件名
void base_mail()
  解码函数,不过在这里解码过程中,读进去的字节数一定要是4的倍数,

int Base64Dec(unsigned char *buf,const unsigned char*text,int size)
解码函数。 Buf是解完后的,
           Text 是解之前的
           Size 是大小

实现的功能:任意接收任何格式的附件内容,并完整的解码成功。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/43045/showart_431438.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP