最近在做自动化测试环境的自动部署,其他都很顺利,但是同事反应说我们并不知道你是否安装成功,而且也不知道你安装的最新版本是什么,不是很方便,所以我就想试着用perl来写一个自动发送邮件的脚本,但最新的build安装成功的时候,则发一封邮件通知测试人员,这样就全程自动化了。
哈哈,底下是本人的实现。主要是通过perl提供的Net::Smtp包来写的。
上面需要注意的就是邮件的发送者和接收者参数只需要的是用户名,而并不是你的邮箱全名,这个非常重要,不然会发送失败。
但有个例外,就是我在用qq邮箱测试的时候发现接受者的信息必须给全名,不知道问什么他们违反这个规则,如果提示说接受者错误,那就试一试这样修改。
这种自动化脚本在自动化环境中非常有用,可以极大的提高效率。
所以很推荐这样做。:-D。
哈哈,底下是本人的实现。主要是通过perl提供的Net::Smtp包来写的。
- #! /usr/bin/perl -w
- use Net::SMTP;
- use Authen::SASL;//这个需要自己安装 (ppm install Authen::SASL),对加密的邮件服务器需要这句。
- sub send_mail{
- my($to,$from,$subject,@body)=@_;
- my $host="smtp.163.net";#邮件服务器地址
- my $smtp=Net::SMTP->new(
- Host => $host,
- Hello => $host,
- Timeout => 30,
- Debug => 1
- );
- #$smtp->auth('username', 'password');对于加密的smtp服务器需要这行,否则不需要
- die "Could not open connection: $!" if (!defined $smtp);
- $smtp->mail($from);#发送者
- $smtp->to($to);#接受者
- $smtp->data();#数据发送开始标志
- $smtp->datasend("Content-Type:text/plain;charset=GB2312/n");#表示发送数据的报头部分
- $smtp->datasend("From:$from/n");
- $smtp->datasend("Subject:$subject/n");
- $smtp->datasend("/n");
- foreach(@body) {
- $smtp->datasend("$_/n");#发送数据
- }
- $smtp->dataend();#发送结束标志
- $smtp->quit;
- }
- send_mail("zhtsuc","zhtsuc","test",qw(hello world));
但有个例外,就是我在用qq邮箱测试的时候发现接受者的信息必须给全名,不知道问什么他们违反这个规则,如果提示说接受者错误,那就试一试这样修改。
这种自动化脚本在自动化环境中非常有用,可以极大的提高效率。
所以很推荐这样做。:-D。