用socket来发送邮件

      以前用vb时,记得有个mail控件,后来接触到了cdo.messages这个玩意,发邮件是蛮方便,那还是在vbs的情况下,后来看了下php,perl,发现发邮件一个函数就可以了,呵呵,那么这些背后的细节是什么呢,还是用socket来揭示下吧:

      邮件发送离不开一样东西,SMTP,即简单邮件传输协议,对应端口为25,它是一个应用层协议,基于tcp连接的,有自己的协议结构。下面是它的结构展示:

 (1)建立TCP连接。

  (2)客户端向服务器发送HELLO命令以标识发件人自己的身份,然后客户端发送MAIL命令。

  (3)服务器端以OK作为响应,表示准备接收。

  (4)客户端发送RCPT命令。

  (5)服务器端表示是否愿意为收件人接收邮件。

  (6)协商结束,发送邮件,用命令DATA发送输入内容。

  (7)结束此次发送,用QUIT命令退出。

      值得一提的是,发送验证的用户名和密码是要经过base64加密的。其实我们经常说的ESMTP就是SMTP的扩展,需要身份验证,这样提高了其安全性。其它和SMTP一样。

      好了,原理讲差不多了,代码怎么实现呢:

 

     以上的邮件由信封,首部,和正文构成。信封即mail from和rcpt to。首部是from,to,subject,正文便是你要发送的邮件内容。当我们发送一个邮件报文时,用data命令,它以一个“./r/n“字符串结束。即代表我们发送内容的结束。

     本文有不足之处,还望大家多多指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值