SMTP邮件发送协议分析
2012-07-27 00:22
405 查看
理解SMTP发送数据的格式, 知道怎么客户端和服务器段怎么交互 那么就很容易的自己写出一个邮件客户端。最后附带了 整理过的邮件客户端
C语言版。可以直接加入自己的项目中。。
直接使用命令行演示: telnet smtp.163.com
220 hz-b-163smtp2.163.com SMTP Server for Netease [466] 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
EHLO smtp.163.com//表示连接主机
250-hz-b-163smtp2.163.com
250-mail
250-PIPELINING
250-8BITMIME
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 STARTTLS 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
AUTH LOGIN 表示进行认证
334 VXNlcm5hbWU6 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
bW9uaXRvcmNhdEAxNjMuY29t 用户名 base64加密
334 UGFzc3dvcmQ6 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
cGFzc3cwcmQ= 密码base64加密
235 OK, go ahead (#2.0.0) 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
MAIL FROM:<mydomain@163.com>发送者邮件
250 2.0.0 OK 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
RCPT TO:<93665673@qq.com>接收者邮件
250 2.0.0 OK 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
DATA表示输入数据
354 Start mail input; end with <CRLF>.<CRLF> 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
????????????????
这几行是发送的内容
fjlajd
fads
.
. 点表示开始发送
250 2.0.0 OK 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
ESMTP协议如下:
Socket连接后,按 ESMTP 协议通讯(注意每条命令结尾符“回车\换行\.\回车\换行”结束):
1、EHLO \r\n
这条命令可以不要,但是按照标准的写法,还是加上好。
Example: EHLO smtp.163.net\r\n
2、AUTH LOGIN\r\n
告诉服务器,要进行验证了。
3、Base64_Username\r\n
发送经过 Base64 编码的用户名给服务器。
4、Base64_Password\r\n
发送经过 Base64 编码的密码给服务器。
5、MAIL FROM:\r\n
发送者的Email地址。
Example: MAIL FROM: lcother@163.net\r\n
6、RCPT TO:\r\n
目标Email地址。
Example: RCPT TO: target@163.net\r\n
7、DATA\r\n
开始传送数据。
8、发送数据\r\n.\r\n
注意:SMTP协议只发送信息,至于如何区分CC、BCC、Subject、Body等不属于SMTP的范围,详情请查看RFC文档MAIL格式部分
简单说一下MAIL格式:Sunject:<主题>\r\n\r\n<内容>,还有好多……
返回值为“250 ***”表示正常,同时***里含有MessageID等信息(前面的命令都有相应的返回信息)
9、QUIT\r\n
OVer....
TO是你发送给谁:表示你要把这个邮件发给谁
CC是抄送 Carbon Copy, 抄送:表示你告诉谁我把邮件发给某些人了
BCC是密送 Blind Carbon Copy,隐蔽副本,别的人不知道你发送给她了,只有他自己知道
一般使用的邮件服务器和端口号
smtp.gmail.com
587 USE_TLS
465 USE_SSL
smtp.163.com
25 USE_TLS|NO_SECURITY
smtp.live.com
25 USE_TLS
smtp.aol.com
587 USE_TLS
plus.smtp.mail.yahoo.com
465 USE_SSL
以上 NO_SECURITY=0, USE_TLS =1,USE_SSL=2
linux下的mailx发送带附件多人抄送的邮件,例子:
mailx -s "test" -a 1.txt -c "xxx@qq.com zzz@qq.com" "yyyy@qq.com" < 2.txt
表示主体为test
待一个附件1.txt
抄送给xxx@qq.com和zzz@qq.com
主送给yyyy@qq.com
并把2.txt的内容当做邮件正文发出
监控军刀下载
带强大的邮件和短信功能
下载:
邮件实战:
短信实战:
加密密码
先使用 mc -to64 xxxxxx 生成HEX
端口监控并发送消息通知实战
如果要用自己的邮箱账号发送邮件,需要写个配置文件,在用户主目录下编辑.mailrc,内容是:
set from=test@lzu.cn smtp=smtp.lzu.cn
set smtp-auth-user=your_E-mail_address smtp-auth-password=your_password
set smtp-auth=login
在我粘过来之前有说明的,,这个,没说明也看得懂得懂得吧
在网上搜索的时候还说什么uuencode的什么的,,我就没弄明白怎么搞,
就这样了。。。
reference: http://www.codeproject.com/Articles/28806/SMTP-Client
官方的列子有点问题。
修改后的源码下载地址: http://download.csdn.net/detail/wuhualong1314/4456700
C语言版。可以直接加入自己的项目中。。
直接使用命令行演示: telnet smtp.163.com
220 hz-b-163smtp2.163.com SMTP Server for Netease [466] 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
EHLO smtp.163.com//表示连接主机
250-hz-b-163smtp2.163.com
250-mail
250-PIPELINING
250-8BITMIME
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 STARTTLS 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
AUTH LOGIN 表示进行认证
334 VXNlcm5hbWU6 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
bW9uaXRvcmNhdEAxNjMuY29t 用户名 base64加密
334 UGFzc3dvcmQ6 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
cGFzc3cwcmQ= 密码base64加密
235 OK, go ahead (#2.0.0) 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
MAIL FROM:<mydomain@163.com>发送者邮件
250 2.0.0 OK 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
RCPT TO:<93665673@qq.com>接收者邮件
250 2.0.0 OK 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
DATA表示输入数据
354 Start mail input; end with <CRLF>.<CRLF> 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
????????????????
这几行是发送的内容
fjlajd
fads
.
. 点表示开始发送
250 2.0.0 OK 2a67ec6a-d0cc-4c77-b4fc-92bd379c3df1
ESMTP协议如下:
Socket连接后,按 ESMTP 协议通讯(注意每条命令结尾符“回车\换行\.\回车\换行”结束):
1、EHLO \r\n
这条命令可以不要,但是按照标准的写法,还是加上好。
Example: EHLO smtp.163.net\r\n
2、AUTH LOGIN\r\n
告诉服务器,要进行验证了。
3、Base64_Username\r\n
发送经过 Base64 编码的用户名给服务器。
4、Base64_Password\r\n
发送经过 Base64 编码的密码给服务器。
5、MAIL FROM:\r\n
发送者的Email地址。
Example: MAIL FROM: lcother@163.net\r\n
6、RCPT TO:\r\n
目标Email地址。
Example: RCPT TO: target@163.net\r\n
7、DATA\r\n
开始传送数据。
8、发送数据\r\n.\r\n
注意:SMTP协议只发送信息,至于如何区分CC、BCC、Subject、Body等不属于SMTP的范围,详情请查看RFC文档MAIL格式部分
简单说一下MAIL格式:Sunject:<主题>\r\n\r\n<内容>,还有好多……
返回值为“250 ***”表示正常,同时***里含有MessageID等信息(前面的命令都有相应的返回信息)
9、QUIT\r\n
OVer....
TO是你发送给谁:表示你要把这个邮件发给谁
CC是抄送 Carbon Copy, 抄送:表示你告诉谁我把邮件发给某些人了
BCC是密送 Blind Carbon Copy,隐蔽副本,别的人不知道你发送给她了,只有他自己知道
一般使用的邮件服务器和端口号
smtp.gmail.com
587 USE_TLS
465 USE_SSL
smtp.163.com
25 USE_TLS|NO_SECURITY
smtp.live.com
25 USE_TLS
smtp.aol.com
587 USE_TLS
plus.smtp.mail.yahoo.com
465 USE_SSL
以上 NO_SECURITY=0, USE_TLS =1,USE_SSL=2
linux下的mailx发送带附件多人抄送的邮件,例子:
mailx -s "test" -a 1.txt -c "xxx@qq.com zzz@qq.com" "yyyy@qq.com" < 2.txt
表示主体为test
待一个附件1.txt
抄送给xxx@qq.com和zzz@qq.com
主送给yyyy@qq.com
并把2.txt的内容当做邮件正文发出
监控军刀下载
带强大的邮件和短信功能
下载:
邮件实战:
c:\>mc -mail -msender domain1@gmail.com -mu domain1@gmail.com -mp myloginuserpwd -msrv smtp.gmail.com -mport 465 -rcpt "12345678@qq.com" -body "f<a hre =http://www.cnanubis.cn>link 我http://www.cnanubis.cn</a>as<br/>你" -format p -priority 3 -cc 123456789@qq.com -bcc monitorcat@163.com -sec 2 -attach "c:\atlog.txt,c:\tootx.txt,c:\test.h2.db,c:\说明.txt"
短信实战:
mc -sms 138138138 飞信密码 接收者手机号码 发送的内容
加密密码
mc -v -sms 13813813810 -use64 d3VodWFsb25nMTMxNA= 1399999999 "<" "c:\msg.txt"
先使用 mc -to64 xxxxxx 生成HEX
端口监控并发送消息通知实战
mc \\baidul.com -p 80 -t 10000 -flag 0 -a "cmd.exe /c mc -mail -rcpt myemail@qq.com -body 百度服务器挂" -sms 13813813818 1234 1381381381 "百度服务器挂了"
如果要用自己的邮箱账号发送邮件,需要写个配置文件,在用户主目录下编辑.mailrc,内容是:
set from=test@lzu.cn smtp=smtp.lzu.cn
set smtp-auth-user=your_E-mail_address smtp-auth-password=your_password
set smtp-auth=login
在我粘过来之前有说明的,,这个,没说明也看得懂得懂得吧
在网上搜索的时候还说什么uuencode的什么的,,我就没弄明白怎么搞,
就这样了。。。
reference: http://www.codeproject.com/Articles/28806/SMTP-Client
官方的列子有点问题。
修改后的源码下载地址: http://download.csdn.net/detail/wuhualong1314/4456700
相关文章推荐
- 邮件发送退信分析大全/SMTP error, RCPT TO: 550 Relay Deny
- 邮件发送退信分析大全/SMTP error, RCPT TO: 550 Relay Deny
- SMTP邮件格式、SMTP 协议,SMTP的MIME写法,SMTP发送HTML邮件
- SMTP邮件传输协议发送邮件和附件
- oracle utl_smtp 邮件发送协议
- 通过java socket编程使用smtp简单邮件协议发送邮件
- SMTP邮件传输协议发送邮件和附件
- SMTP邮件格式、SMTP 协议,SMTP的MIME写法,SMTP发送HTML邮件
- SMTP邮件传输协议发送邮件和附件(转)
- SMTP、POP3、IMAP邮件协议分析
- System.Net.Mail 发送邮件 SMTP协议之二【常用邮箱的SMTP的配置】
- dos下利用SMTP、POP3协议发送邮件的过程
- PHP+socket+SMTP、POP3协议发送、接收邮件
- windows 8上使用SmtpClient.Send()发送邮件失败的原因分析。
- SMTP邮件格式、SMTP 协议,SMTP的MIME写法,SMTP发送HTML邮件
- C++程序中支持SMTP邮件发送的解决方案荟萃
- fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
- CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP在第三方上边使用发送邮件
- 【转】Drupal如何配置SMTP发送邮件?
- Python Code: 利用QQ邮箱发送邮件,解决SMTPAuthenticationError:530错误