###近期的一个小项目中需要用到邮件自动通知功能,搜了搜,发现phpmailer这个东西大家用的挺多的。
1. 首先去sourceforge下载[phpmailer][1],也可去我的[网盘][2]下载,我用的是5.1版本的。
2. 看到phpmailer目录下有三个class文件,这便是phpmailer的核心,可以将这些文件拷到你的项目中。
3. 使用起来phpmailer很方便,如下:
```php
require("class.phpmailer.php");
$mail = new PHPMailer(); //建立邮件发送类
$mail->CharSet = "GB2312";
$mail->IsSMTP(); // 使用SMTP方式发送
$mail->SMTPAuth = true; // 启用SMTP验证功能
$mail->Port=25;
$mail->Host = "smtp.qq.com"; // 您的企业邮局域名
$mail->Username = "[email protected]"; // 邮局用户名(请填写完整的email地址)
$mail->Password = "213123"; // 邮局密码
$mail->From = "[email protected]"; //邮件发送者email地址
$mail->FromName = "tester";
$address = "[email protected]";//收件地址
$mail->AddAddress("$address", "a");
$mail->Subject = "测试消息通知";
$mail->Body = "您好!系统中有条信息未审核。"; //邮件内容
if(!$mail->Send())
{
echo "邮件发送失败. <p>";
echo "错误原因: " . $mail->ErrorInfo;
exit;
}
```
4. 可以在前面发送消息前调用下数据库,查看是否有消息需要发送。
5. 由于我们的项目是在windows的服务器上跑的,所以需要定时去检查是否需要发送邮件。Linux下可以使用crontab轻易地解决,在Windows下要使用windows任务计划。
6. 首先需要写一个bat脚本,但是bat脚本在执行任务计划时,怎么出现一个黑框,挺吓人的,所以先写一个vbs,通过它去调用bat脚本,bat脚本再去调用php实现功能。
7. vbs内容如下:
```perl
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c E:\xampp\htdocs\sdc\application\mail\timeSend.bat",vbhide
```
8. vbs调用timeSend.bat,内容如下:
```perl
E:\xampp\php\php.exe E:\xampp\htdocs\sdc\application\mail\mail.php > E:\xampp\htdocs\sdc\application\mail\log.txt
```
9. 打开**任务面板->系统和安全->管理工具->计划任务**,新建**基本任务**,触发器自己想要触发的时间,操作选择**启动程序**,浏览选择自己的vbs程序,点击完成。
10. 这样,程序就可以在指定时间发送邮件了。
[1]:http://sourceforge.net/projects/phpmailer/
[2]:http://pan.baidu.com/s/1jG3IaV0