LR用于发送带附件邮件

上一篇 / 下一篇  2008-05-08 14:13:10 / 个人分类:性能测试

邮件附件参数化

测试要求描述:

1、 使用邮件客户端foxmail发送邮件;

2、 要求邮件携带附件,且邮件附件进行参数化;

测试过程描述:

1、 使用LoadRunner8.1录制脚本,协议选择smtp,所录制的程序为foxmail

2、 录制完成后的action脚本如下:

smtp1 = 0;

smtp_logon_ex(&smtp1, "SmtpLogon",

       "URL=smtp:// test4:ffffff@test-root",

       "CommonName=LoadRunner User",

       LAST);

 

smtp_send_mail_ex(&smtp1, "SendMail",

       "To=test1@test.mail",

       "From=test4@test.com",

       "Subject=test1",

       "ContentType=multipart/mixed;",

       MAILOPTIONS,

              "X-mailer: Foxmail 6, 11, 101, 15 [cn]",

       MAILDATA,

              "AttachRawFile=mailnote1_01.dat",

              "AttachRawFile=mailnote1_02.dat",

       LAST);

smtp_logout_ex(&smtp1);

smtp_free_ex(&smtp1);

3、 从录制的脚本可以看出,该邮件可以进行参数化的地方包括登录邮件服务器的用户名和密码、邮件接收者、邮件发送者、邮件主题、邮件正文以及邮件附件;本文仅讨论邮件附件的参数化;从上述action代码可以看出"AttachRawFile=mailnote1_01.dat",    "AttachRawFile=mailnote1_02.dat",中的一个为邮件附件,实际分析发现mailnote1_02.dat为邮件附件;由此考虑直接把mailnote1_02.dat进行参数化,并把邮件所要携带的附件放到当前存储目录下,尝试进行回放后发现所发送的邮件没有携带附件;

4、 后分析发现mailnote1_02.dat中的内容如下所示:

Content-Type: application/octet-stream;

   name="test.txt"

Content-Transfer-Encoding: base64

Content-Disposition: attachment;

   filename="test.txt"

 

ztLDx7a8ysfW0Ln6yMs=

至此找到不能对邮件附件直接进行参数化的原因,没有把邮件附件转换成相应的编码发送出去;

5、 出现上述结果后,认为直接参数化结果的思路行不通,考虑进行其他方式的参数化;偶然发现smtp_translate_ex可以把smtp服务器进行消息转换,由此考虑是否可以使用该函数把需要携带的邮件附件进行相关的编码转换,然后再发送,经过试验后终于成功;

6、 试验成功的actiong代码如下所示:

      smtp1 = 0;

      smtp_logon_ex(&smtp1, "SmtpLogon",

             "URL=smtp://test4:ffffff@test-root",

             //"CommonName=LoadRunner User",

             LAST);

 

   smtp_translate_ex(&smtp1,"test.txt",  "Content-Type: application/octet-stream;\n  name=\"outfile1.txt\"\nContent-Transfer-Encoding: base64\nContent-Disposition: attachment;\n  filename=\"outfile1.txt\"\r\n"",BASE64_ENCODED, "outfile1.txt");

      smtp_send_mail_ex(&smtp1, "SendMail",

             "From=test4@test.com",

       "To=test1@test.mail",

             "Subject=test1",

             "ContentType=multipart/alternative;",

             MAILOPTIONS,

                    "X-mailer: Foxmail 6, 11, 101, 15 [cn]",

             MAILDATA,

                //"AttachrRawFile=mailnote1_01.dat",

           "AttachrRawFile=outfile1.txt",

           LAST);

   

      smtp_logout_ex(&smtp1);

      smtp_free_ex(&smtp1);

注:smtp_translate_ex中第三个变量的用法得到了3atesting老大kernzhang的帮助才得以实现,在此表示感谢。

注:原创作品。


TAG: 性能测试

 

评分:0

我来说两句

Open Toolbar