SMTP邮件发送协议分析
来源:互联网 发布:mac如何文档文件管理 编辑:程序博客网 时间:2024/06/05 01:04
理解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的内容当做邮件正文发出
监控军刀下载
带强大的邮件和短信功能
下载:
邮件实战:
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邮件发送协议分析
- SMTP协议发送邮件
- 使用SMTP协议发送邮件
- 采用smtp协议发送邮件
- 使用smtp协议发送邮件
- C语言实现SMTP协议发送邮件
- Java采用SMTP协议发送邮件
- smtp协议 VC实现发送邮件
- SMTP协议发送邮件和附件
- System.Net.Mail 发送邮件 SMTP协议
- 关于SMTP协议发送邮件的总结
- c语言利用SMTP协议发送邮件
- smtp协议 VC实现发送邮件
- Python SMTP协议发送QQ邮件
- c语言利用SMTP协议发送邮件
- VBS使用SMTP协议发送邮件
- smtp协议 VC实现发送邮件
- Java采用SMTP协议发送邮件
- C#各种反射动态赋值取值方法
- pjsip
- 利用Lambda获取类中属性的名称
- 一个很好的学习Linux的网站
- sicily--1194. Message Flood
- SMTP邮件发送协议分析
- NIO Socket学习
- JAVA中抽象工厂模式
- java观察者模式介绍
- 使用kgdb调试linux内核及内核模块
- ado数据库编程(一)
- 自定义一个类中包含一个功能和readLine一致的方法
- MyEclipse9.1 启动和运行速度优化设置
- 解决Linux系统 ping: sendmsg: Operation not permitted 问题