Linux下使用Perl来发信邮件过程

Linux下使用Perl来发信邮件过程

[@more@]
[日期:2007-12-02] 来源:Linux公社 作者:Linux

最近一直很郁闷,要维护10所大学服务器,假如服务器的磁盘满了,或者其它原因,能不能早点发现呢?我就 想到了,弄个脚本,监控服务器,有异常时,发封邮件给我,就OK了。我原来一直想使用系统自带的sendmail来实现我的想法,由于对sendmail 不熟,一直弄不好。只到今天,嘿嘿,在看一个网站时,看到使用php发邮件的方法。记得装软件时,没有装php,但是有装perl啊,就这么办,下面是 Linux使用perl来发邮件的过程,如下:

1、登录系统

2、查询是否有安装perl

  [root@CentOS ~]# rpm -qa | grep perl
    perl-5.8.5-36.RHEL4

3、OK,来检查一下网络

  [root@CentOS ~]# ping act0r.bokee.com
  PING act0r.bokee.com (58.49.57.34) 56(84) bytes of data.
  64 bytes from 58.49.57.34: icmp_seq=0 ttl=54 time=128 ms

4、安装发邮件所需要的模块

  [root@CentOS ~]# perl -MCPAN -e shell

    基本上是一路回车,只有到最后面时,会让你选择你所在的区域,及国家。

  cpan>install Authen::SASL

  cpan>q

5、vi /etc/init.d/sendmail.sh

#!/usr/bin/perl
use Net::SMTP;

my $mailhost = "smtp.163.com"; # SMTP服务器
my $mailfrom = '[email protected]'; # 你的EMAIL地址
my @mailto = ('[email protected]', '[email protected]'); # 收信人地址
my $subject = "此为标题";
my $text = "此为正文n第二行位于此。";

$smtp = Net::SMTP->new($mailhost, Hello => 'localhost', Timeout => 120, Debug => 1); #为0时,不输出调试信息

# anth login, type your user name and password here
$smtp->auth('user','pass'); ###用户名和密码

foreach my $mailto (@mailto) {
# Send the From and Recipient for the mail servers that require it
$smtp->mail($mailfrom);
$smtp->to($mailto);

# Start the mail
$smtp->data();

# Send the header
$smtp->datasend("To: $mailton");
$smtp->datasend("From: $mailfromn");
$smtp->datasend("Subject: $subjectn");
$smtp->datasend("n");

# Send the message
$smtp->datasend("$textnn");

# Send the termination string
$smtp->dataend();
}
$smtp->quit;


6、给sendmail执行权限

  [root@CentOS ~]# chmod 755 /etc/init.d/sendmail.sh

7、测试

  [root@CentOS ~]# /etc/init.d/sendmail.sh

8、嘿嘿,看看信发送了没有。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/66634/viewspace-1052784/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/66634/viewspace-1052784/

你可能感兴趣的:(php,shell)