在外地出差也搞什么邮件签到,真无聊~
前一段看欧锦赛,时差还没调整过来,早上起不来zzzzz
不过上有政策,下有对策嘛
就在服务器上写了一个perl脚本,用Net::SMTP发邮件,用crontab来定时跑,一下就解决了,哈哈
perl脚本:
#!/usr/bin/perl
use Net::SMTP;
use MIME::Base64;
################
# 自动签到脚本 #
################
$host = '10.182.131.153'; #SMTP服务器地址
###########################
#
# $host: smtp服务器
# $auth: 邮件账户
# $password: 邮件账户密码
# $to: 要发送的目标
# $mail_body: 邮件内容
#
###########################
sub send_mail {
my($host, $auth, $password, $to, $mail_body) = @_;
my $smtp = Net::SMTP->new(
Host => $host,
Hello => $host,
Timeout => 30,
Debug => 1
);
$smtp->auth(substr($auth, 0, index($auth, '@')), $password);
$smtp->mail($auth);
$smtp->to($to);
$smtp->bcc($auth);
$smtp->data();
$smtp->datasend("Content-Type:text/plain;charset=GB2312\n");
$smtp->datasend("Content-Transfer-Encoding:base64\n");
$smtp->datasend("From:$auth \n");
$smtp->datasend("To:$to \n");
$smtp->datasend("Subject:=?gb2312?B?".encode_base64($mail_body,'')."?=\n\n");
$smtp->datasend("\n");
$smtp->datasend(encode_base64($mail_body,'')." \n");
$smtp->dataend();
$smtp->quit;
}
#获取命令行参数
if(@ARGV < 1) {
$conf_file = './mailusers.conf'; #默认配置文件
}
else {
$conf_file = $ARGV[0]; #获取配置文件名
}
#打开配置文件和日志文件
open CONF_FILE, $conf_file or die "Open config file [$conf_file] failed! \n";
open LOG_FILE, '>>send.log' or die "Open send.log failed! $!\n";
while(<LOG_FILE>) {
chomp;
if($_ =~ /^#+/) {
next; #跳过注释行
}
@line = split /\s+/, $_;
if(@line != 4) {
next; #跳过空行
}
#发送邮件
send_mail($host, $line[0], $line[1], $line[2], $line[3]);
print LOG_FILE "[" . localtime() . "] send_mail($host, $line[0], $line[1], $line[2], $line[3]); \n";
}
close CONF_FILE;
close LOG_FILE;
|
自动发信的账户和目标都配在配置文件里,配置文件格式如下mails.conf:
#<auth> <password> <To> <mail body>
zzq@nlgx.dmp 000000 qiandao@nlgx.dmp 签到
然后就是在 crontab 里配自动运行是时间了:
#分 时 日 月 星期 命令
41 8 * * 1-5 /usr/bin/perl /home/aig/.run/checkin.pl /home/aig/.run/mails.conf
58 13 * * 1-5 /usr/bin/perl /home/aig/.run/checkin.pl /home/aig/.run/mails.conf
分享到:
相关推荐
一个perl发送邮件的脚本: 功能: mailto.pl -s Subject -t To -f file-content -h Format-HTML -s 指定主题 -t 指定接收人,多人以,分隔 -f 邮件内容,发之前放在文件中 -h 以HTML格式发送,缺省以文本方式发送 ...
可实现perl自动发送邮件 可以实现邮件自动发送 后台执行
perl 写的发邮件smtp perl 写的发邮件smtpperl 写的发邮件smtp
perl读取excel内容,并发送html邮件!中文不乱码,直接下载可用,只需要改一下文件路径,这是已经上生产的脚本
perl smtp 发送邮件 自动发送邮件
在unix下利用perl 给多人发送邮件
利用perl脚本发送邮件的时候,有时候需要使用html格式,此脚本就是利用perl发送html邮件的一个例子
配置一下 ip地址 my $ADDR=pack('SnC4x8',$PF_INET,$port,192,168,60,10); 和要发送的邮件地址 就可以发送匿名邮件
Perl的Email 发送程序与插件。pl 文件加 Mail:Sender插件,程序亲自测试是成功的!
在unix自己的目录下自动记录emailaddress。自动发送标题邮件#######
sendEmail一个用perl写的邮件客户端,轻量级,支持命令发送邮件
在perl中使用本机的sendmail发送邮件的代码如下: #!/usr/bin/perl use strict; my($r_mail) = 'xxxx@163.com'; my($s_mail) = 'root@abc.cn'; my($subject) = '邮件标题'; open(MAIL, '|/usr/lib/sendmail -t'); ...
发成果 186 16.3 下一步你要做的工作 187 16.3.1 要做的第一步工作 187 16.3.2 最有用的工具 187 16.3.3 查找程序中的错误 188 16.3.4 首先要靠自己来解决问题 188 16.3.5 从别人的程序错误中吸取教训 189 16.3.6 ...
第1讲 Perl入门 第2讲 Perl的基本构件 第3讲 控制程序流 第4讲 基本构件的堆栈 第5讲 运行文件操作 ...第22讲 使用CGI程序发送电子邮件 第23讲 服务器推送和访问次数计数器 第24讲 建立交互式Web站点
email-outlook-message-perl:电子邮件::Message Perl模块,用于读取Outlook .msg文件
第7章 SMTP:发送邮件 第8章 POP,IMAP和NNTP:处理邮件和网络新闻 第9章 Web客户 第3部分 开发TCP客户/服务器 第10章 创建子进程的服务器和inetd守护进程 第11章 多线程应用程序 第12章 多路复用应用程序 ...
Perl电子邮件API Perl的MailSlurp官方客户端。 资源 。 安装 设置CPAN 通过运行以下命令安装cpanm如果尚未安装): cpan App::cpanminus
发成果 186 16.3 下一步你要做的工作 187 16.3.1 要做的第一步工作 187 16.3.2 最有用的工具 187 16.3.3 查找程序中的错误 188 16.3.4 首先要靠自己来解决问题 188 16.3.5 从别人的程序错误中吸取教训 189 16.3.6 ...
22.1.2 发送邮件时首先应该注意的问题 252 22.2 邮件发送函数 253 22.2.1 用于UNIX系统的邮件函数 254 22.2.2 用于非UNIX系统的邮件函数 255 22.3 从Web页发送邮件 257 22.4 课时小结 259 22.5 课外作业 259 ...