2014-11-05 23:32:40
来 源
中存储网
sendmail
使用PHP+Sendmail协作来发送邮件需要三个条件:PHP环境+Sendmai程序+smtp服务器。在Discuz!论坛中,除了在后台页面启用“通过 PHP 函数的 sendmail 发送(推荐此方式)”外,只需要按本文的方式修改sendmail.ini相关参数,如是本机架设smtp服务器,则再启用smtp服务器就

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

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

在php.ini中配置相应的sendmail参数:
[mail function]
; 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服务器就可以了。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。