`
qzriso
  • 浏览: 243013 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

perl发送邮件

    博客分类:
  • perl
阅读更多

在外地出差也搞什么邮件签到,真无聊~
前一段看欧锦赛,时差还没调整过来,早上起不来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自动发邮件

    在提供的压缩包文件"Perl_mail"中,可能包含了一个或多个示例脚本,这些脚本演示了如何使用Perl发送邮件。通常,这些脚本会导入必要的邮件模块,定义邮件内容(包括收件人、主题、正文和附件),然后通过SMTP服务器...

    Perl发送邮件脚本

    一个perl发送邮件的脚本: 功能: mailto.pl -s Subject -t To -f file-content -h Format-HTML -s 指定主题 -t 指定接收人,多人以,分隔 -f 邮件内容,发之前放在文件中 -h 以HTML格式发送,缺省以文本方式发送 ...

    perl 写的发邮件smtp

    在IT行业中,Perl常被用来编写自动化脚本,其中之一就是通过SMTP(Simple Mail Transfer Protocol)发送电子邮件。SMTP是互联网标准,用于从一台邮件服务器向另一台邮件服务器发送邮件。下面将详细介绍如何使用Perl...

    Perl的Email 发送程序与插件

    Perl是一种强大的脚本编程语言,尤其在处理文本和系统管理任务方面表现卓越。在IT领域,Perl被广泛用于创建各种实用程序,其中之一就是发送电子...通过学习和实践,你可以掌握使用Perl发送邮件的技能,提高工作效率。

    利用perl给多人发送邮件

    本主题将深入探讨如何在Unix环境下利用Perl编写脚本来实现给多人发送邮件的功能。 首先,我们要理解Perl中的邮件发送机制。在Unix系统中,Perl可以通过内置的`Mail::Sender`模块或者第三方的`Email::Sender`模块来...

    perl读取excel内容,并发送html邮件!中文不乱码

    perl读取excel内容,并发送html邮件!中文不乱码,直接下载可用,只需要改一下文件路径,这是已经上生产的脚本

    perl smtp发送邮件

    perl smtp 发送邮件 自动发送邮件

    perl发送html邮件

    利用perl脚本发送邮件的时候,有时候需要使用html格式,此脚本就是利用perl发送html邮件的一个例子

    perl-Mail-Sendmail

    在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'); ...

    局域网发送匿名邮件的perl脚本

    配置一下 ip地址 my $ADDR=pack('SnC4x8',$PF_INET,$port,192,168,60,10); 和要发送的邮件地址 就可以发送匿名邮件

    sendEmail一个用perl写的邮件客户端

    "sendEmail" 是一个基于Perl编写的轻量级邮件客户端程序,它允许用户通过命令行接口发送电子邮件。这个工具对于开发者来说非常方便,因为它不需要复杂的图形界面,而是通过简单的命令参数就能完成邮件的发送。 ...

    perl 邮件处理send_mail

    在unix自己的目录下自动记录emailaddress。自动发送标题邮件#######

    Ezmlm邮件列表管理程序的Perl接口模块

    在成功安装Ezmlm的Perl接口模块后,我们就可以在Perl脚本中使用它来执行各种操作,如创建新的邮件列表、管理订阅者、发送公告等。例如,创建新邮件列表的代码可能如下: ```perl use Ezmlm; my $ezmlm = Ezmlm-&gt;...

    告警监控发送邮件脚本

    邮件发送脚本通常使用编程语言编写,例如Python、Shell或Perl。这里以Python为例,介绍一种常见的实现方式: 1. 引入库:Python的`smtplib`库用于处理SMTP(简单邮件传输协议),`email`库用于构建邮件内容。 2. ...

    svn提交文件自动邮件提醒

    `commit-email.pl` 是一个Perl脚本,通常作为SVN服务器的post-commit钩子,当用户提交代码到SVN仓库后,该脚本会被触发,然后自动发送一封包含提交详情的邮件给指定的收件人。这不仅提高了团队协作效率,也确保了...

    Linux或Ubuntu下SVN服务器自动发送邮件配置

    首先,我们需要下载`commit-email.pl`脚本,这是一个Perl脚本,用于在SVN提交时触发邮件发送。你可以从Apache Subversion的官方仓库下载此脚本...

    神奇的perl两本perl入门教材合集

    2. **网络编程**:介绍如何使用Perl进行HTTP、FTP等协议的通信,以及邮件发送、套接字编程等。 3. **数据库交互**:讲解如何使用DBI模块进行数据库操作,连接MySQL、Oracle等数据库。 4. **正则表达式进阶**:深入...

    Network Programming With Perl

    6. **SMTP邮件发送**:`Net::SMTP`模块支持发送电子邮件,包括设置发件人、收件人、主题和正文内容。 7. **DNS查询**:使用`Net::DNS`模块,可以执行DNS解析,获取域名对应的IP地址或其他DNS记录。 8. **网络扫描...

    email-outlook-message-perl:电子邮件::Message Perl模块,用于读取Outlook .msg文件

    电子邮件::Message Perl模块是Perl编程语言中用于处理和解析Microsoft Outlook .msg文件的强大工具。这个模块使得开发者能够方便地在不依赖Outlook或其他Microsoft Office组件的情况下,读取、操作和提取Outlook邮件...

Global site tag (gtag.js) - Google Analytics