学习NO.1 发表于 2016-7-7 16:10:36

Windows系统配置PHP和sendmail使用mail函数在Discuz!论坛发邮件

使用PHP+Sendmail协作来发送邮件需要三个条件:PHP环境 + Sendmai程序+smtp服务器。这样做比直接调用PHP相关参数来发邮件的好处可能是比较耗资源的Socket连接都可以有sendmail来实现,而不必由PHP自己来实现,我实际比较过,确实速度要快很多。

首先需要一个Sendmail组件,XAMPP套件里就有一个。把整个SendMail文件夹拷贝到合适的目录下,例如”D:/SendMail/”

在php.ini中配置相应的sendmail参数:

; For Win32 only.
SMTP = smtp.163.com (如果同一台服务器上存在SMTP服务器,则可以保留localhost不变,否则,填写一个比较可靠的smtp服务器地址,例如163,gmail等)
smtp_port = 25 (如果服务器无需验证,则填写25端口;或者自架SMTP服务器,为了安全起见 ,另改一个通信端口号;或者使用启用ssl的smtp服务器,则填写465端口);
; For Win32 only.
sendmail_from = aa@163.com (貌似这个没什么具体作用?)
; For Unix only. You may supply arguments as well (default: “sendmail -t -i”).
sendmail_path =”D:/SendMail/sendmail.exe -t”(这里填写刚才sendmail文件夹放置的位置,文件夹下有一个sendmail.exe执行文件)
同样,在sendmail目录下的sendmail.ini文件里,也要配置相应的参数,除了上面“smtpserver=”和“smtpport=”外,还可能需要配置如下参数:
auth_username=
auth_password= (如果使用ssl方式的smtp服务器,需要填写这两个参数,分别把登录邮箱的用户名和密码设置进去就可以了) ;error_logfile=error.log
;debug_logfile=debug.log(如果需要输出调试信息,就需要把这两句前面的分号去掉,error.log里保存报错信息,debug.log里保存每一条发送记录)
这样配置后就可以直接使用PHP自带的mail()函数来发送邮件了。
重启Aapche后,使用php sendmail测试mail()功能

<?php
$now = date(“Y-m-d h:i:s”);
$from_name = ’测试寄件人’;
$from_email =
$headers = ’From: $from_name <$from_email>’;
$body = ’嗨, n 这是一封测试邮件来自 $from_name <$from_email>.’;
$subject = ’[$now] 测试邮件发送’;
if (mail($to, $subject, $body, $headers)) {
echo ”success!”;
} else {
echo ”fail…”;
}
?>

这样,Windows下使用php + sendmail配置就顺利完成了!
如果在Discuz!论坛中,除了在后台页面启用“通过 PHP 函数的 sendmail 发送(推荐此方式)”外,只需要按本文的方式修改sendmail.ini相关参数,如是本机架设smtp服务器,则再启用smtp服务器就可以了。
页: [1]
查看完整版本: Windows系统配置PHP和sendmail使用mail函数在Discuz!论坛发邮件