一,邮件报警之前的准备工作:
1,软件环境:
需要我们具备一个php的环境:
如果没有,先安装php吧
yum install php
另外我们需要一个邮箱,因为我们需要以此邮箱向外发送邮件
2,下载phpmailer软件包:
此项目的官方站地址:
http://phpmailer.codeworxtech.com
说明:下载时请注意选择与自己所安装的php版本一致的程序包
查看php版本:
[root@dev ~]# php -v
PHP 5.1.6 (cli) (built: Sep 20 2007 10:16:10)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
3,下载并进行安装
[root@dev ~]# wget http://downloads.sourceforge.net/phpmailer/phpMailer_v2.3.tar.gz?modtime=1226373448&big_mirror=0
下载完成后解压缩即可
[root@dev ~]# tar -zxvf phpMailer_v2.3.tar.gz
二,使用phpmailer
1,对phpmailer的调用再封装出一个类,以方便写应用的代码
创建一个php文件,命名为 Mailer.php
其内容为:
<?php
/*
Mailer class, for phpmailer
*/
class Mailer {
var $mail;
function Mailer($host, $username,$password) {
$mail = new phpmailer();
$mail->IsSMTP();
$mail->Host = ;
$mail->SMTPAuth = true;
$mail->Username = $username;
$mail->Password = $password;
$mail->From = “admin@mailserver”;
$this->mail = $mail;
}
function addCC($address){
$this->mail->AddCC($address);
}
function addBCC($address){
$this->mail->AddBCC($address);
}
function setFrom($address){
$this->mail->From = $address;
}
function AddReplyTo($address){
$this->mail->AddReplyTo($address);
}
function addFile($file){
$this->mail->AddAttachment($file);
}
function send($to,$name,$subject,$message){
$mailto = split (“,”, $to);
foreach($mailto as $thekey=>$oneto ){
if($oneto!=””){
$this->mail->AddAddress($oneto);
}
}
$this->mail->FromName = $name;
$this->mail->Subject = $subject;
$this->mail->Body = str_replace(“\n”,”<br>\n”,$message);
$this->mail->AltBody = $message;
if(!$this->mail->Send())
{
echo $this->mail->ErrorInfo;
return -1;
}
return 0;
}
}
?>
把此文件放到phpmailer解压后的目录下
2,写出发送邮件的程序
为了举例子,我在此处写一个把df产生的空间使用信息的邮件发送程序
mailspace.php
<?php
//邮件服务器信息
define (“SERVER_MAIL_HOST”, “ip.of.our.mailserver” );
define (“SERVER_MAIL_USER”, “one@nazoua.com” );
define (“SERVER_MAIL_PASS”, “passofmailbox” );
define (“SERVER_MAIL_FROM”, “one@nazoua.com” );
//包含类文件
require_once(“class.smtp.php”);
require_once(“class.phpmailer.php”);
require_once(“Mailer.php”);
//执行命令
$dfinf= shell_exec(“/bin/df”);
//发送邮件
$mail = new Mailer(SERVER_MAIL_HOST,SERVER_MAIL_USER,SERVER_MAIL_PASS,SERVER_MAIL_FROM);
$res_mail = $mail->send(“liuhongdi@gmail.com”,”info_of_server”,”server space usage”,”server space usage:\n”.$dfinf);
?>
说明:
1,在邮件服务器信息部分:
输入邮件服务器的地址:域名或IP地址
邮箱的用户名
邮箱的密码
from 一项,注意设置为带有完整域名的邮箱地址
2,注意把此程序放在phpmailer解压后的目录中,否则
在包含类文件部分需指明类文件的完整路径
3,执行命令部分得到用邮件进行通知的主要信息,
此部分可以根据自己的需要进行处理
4,发送邮件部分中 send方法的参数的含义
第一个参数:liuhongdi@gmail.com 这个是负责接收报警邮件的邮箱,如果我们需要把邮件发送给多个人,
可以填写上多个邮箱,注意用半角逗号隔开即可
第二个参数:info_of_server 这个是接收到邮件时所显示的邮件发送者的信息
第三个参数:server space usage 一封邮件的主题
第四个参数: 就是这封邮件的内容了
3,如何从命令行执行发邮件的程序?
/usr/bin/php /usr/local/phpMailer_v2.3/mailspace.php
如需放到crond中定时运行,
执行 crontab -e
30 2 * * * /usr/bin/php /usr/local/phpMailer_v2.3/mailspace.php