上下求索

采用loadrunner中的smtp协议发送邮件

上一篇 / 下一篇  2009-09-02 11:33:04

139邮箱项目的测试,看其他同学为测试邮件容量限制不停的收发邮件着实辛苦,就研究了下邮件系统smtp的协议方式,采用loadrunner很容易的就编写了下面一个邮件发送脚本,基本实现了发送、抄送、暗送以及附件发送的主要功能。
采用loadrunner中的smtp协议发送邮件的关键代码如下:
Action()
{
  smtp1 = 0;
  smtp_logon_ex(&smtp1, "SmtpLogon",
  "URL=smtp://email.163.com",
  "LogonUser=user",
  "LogonPass=passwd",
  "CommonName=LoadRunner User",
  LAST);

//登录邮件服务器,包括smtp服务器地址,用户名,密码

 smtp_send_mail_ex(&smtp1, "SendMail",
  "To=test1@163.com",                      //收件人地址
  "Cc=test2@163.com",                      //抄送地址
  "From=test@163.com",                     //发件人地址
  "Subject=Title",                         //邮件标题
  "ContentType=multipart/mixed;",
  MAILOPTIONS,                             //MailOption
   "X-Mailer: Microsoft Office Outlook 12.0",
   "Thread-Index: AcoreFEscIoPMc6hQriTnfzzfI48cg==",
  MAILDATA,
   "AttachRawFile=mailnote1_01.dat",       //邮件内容1
   "AttachRawFile=mailnote1_02.dat",       //邮件内容2(附件)
  LAST);

 smtp_logout_ex(&smtp1);

 smtp_free_ex(&smtp1);

 return 0;
}


邮件内容1mailnote1_01.dat(下面是邮件内容的数据)
Content-Type: text/plain;
 charset="us-ascii"
Content-Transfer-Encoding: 7bit
This is a test mail.                    //邮件内容
 

邮件内容1mailnote1_02.dat(下面是邮件附件的数据)
Content-Type: text/plain;
 name="attachment.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="attachment.txt"            //附件文件名
This is a test attachment.            //附件内容


实现了邮件功能后,顺手又抓包研究了smtp的协议通讯方式,通过代码的分析已经得知,SMTP Vuser将发送邮件的动作转化成了VU 函数,但这是不是对SMTP协议一个完整的模拟呢?我们知道SMTP协议是由一系列操作原语组成的,如HELO、MAIL FROM、RCPT TO等。如果回放SMTP Vuser脚本,同时我们在网络上能捕获到这些原语,就说明SMTP Vuser确实是对SMTP协议进行了封装和实现。
回放脚本,同时使用Ethereal在网络上捕捉从客户端到服务器25端口的数据。我们捕捉到网络交互如下:
发送者 接收者   数据内容
01. Intel_a3:e8:ef BroadCast   Who has 192.168.1.100?
02. 1d:7d:4a:66 Intel_a3:e8:ef 192.168.1.100 is at 1d:7d:4a:66
03. 192.168.1.1 192.168.1.100 smtp syn
04. 192.168.1.100 192.168.1.1   220 server ready.
05. 192.168.1.1 192.168.1.100 HELO
06. 192.168.1.100 192.168.1.1   cesoo.com hello, glad to meet u
07. 192.168.1.1 192.168.1.100 MAIL FROM:test1@cesoo.com
08. 192.168.1.100 192.168.1.1   250 sender is OK
09. 192.168.1.1 192.168.1.100 RCPT TO:test1@cesoo.com
10. 192.168.1.100 192.168.1.1   250 receipt is OK
11. 192.168.1.1 192.168.1.100 DATA
12. 192.168.1.100 192.168.1.1   Enter mail, end with “.”
13. 192.168.1.1 192.168.1.100 Message body
14. 192.168.1.1 192.168.1.100 Message body
15. 192.168.1.1 192.168.1.100 Message body
16. 192.168.1.100 192.168.1.1   221 cesoo.com closing connect
注:以上数据经过过滤和整理。192.168.1.1为客户端,192.168.1.100为Server端.

我们可以看到1和2是网络ARP协议,用来确定服务器地址。而下面的交互完全遵循SMTP协议规范,老老实实地按照HELO、MAIL FROM、RCPT TO、DATA的顺序进行对话。所以我们从这里可以看到SMTP Vuser确实对SMTP协议进行了一次完全的封装.

子曾经曰过:知其然,知其所以然。


TAG: LoadRunner loadrunner smtp

引用 删除 icecoat   /   2010-06-17 14:18:11
你好,我对照了一下您的代码,几乎一样,但是我就是无法run,我发了个帖子:http://bbs.51testing.com/thread-243048-1-1.html
能否麻烦您帮我看看,谢谢!
下雨的天空 引用 删除 rting   /   2009-11-10 17:33:49
不错。
下雨的天空 引用 删除 rting   /   2009-11-10 17:33:34
5
 

评分:0

我来说两句

我的栏目

日历

« 2024-04-20  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 126749
  • 日志数: 65
  • 建立时间: 2009-06-24
  • 更新时间: 2013-11-01

RSS订阅

Open Toolbar