如前所述,对于Windows用户,有一个伪造的sendmail选项。以下是更详细的操作说明:
如果您正在使用运行Windows和某种WAMP组合(XXAMP、WAMP Server等)的测试服务器,您会注意到PHP sendmail命令(mail())不起作用。Windows根本不提供sendmail语句……
不过,有一个简单的技巧可以解决这个问题:
1) 从http://glob.com.au/sendmail/下载(或使用附件文件)sendmail.zip
2) 将其解压缩到c盘上的某个文件夹中(最好使用简单的路径,例如c:\wamp\sendmail——长文件名可能会导致问题)
3) 编辑您的PHP.INI文件(注意:WAMP用户应从WAMP菜单访问其php.ini文件)。转到[mail function]部分并进行如下修改
[mail function]
; 仅适用于Win32。
;SMTP =
; 仅适用于Win32。
;sendmail_from =
; 仅适用于Unix。您也可以提供参数(默认值:“sendmail -t -i”)。
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
; 强制添加指定参数作为额外参数传递
; 给sendmail二进制文件。即使在安全模式下,这些参数也将始终替换
; mail()的第五个参数的值。
;mail.force_extra_paramaters =
.. 并保存更改。
4) 打开sendmail.ini并修改设置:
[sendmail]
; 您必须将mail.mydomain.com更改为您的SMTP服务器,
; 或更改为IIS的“pickup”目录。(通常是C:\Inetpub\mailroot\Pickup)
; 通过IIS的pickup目录传送的电子邮件使sendmail
; 运行更快,但您不会收到错误消息返回到调用
; 应用程序。
smtp_server=mail.yourdomain.com
; SMTP端口(通常为25)
smtp_port=25
; 此服务器的默认域将从注册表中读取
; 当未提供电子邮件地址时,这将附加到电子邮件地址
; 如果要覆盖注册表中的值,请取消注释并修改
default_domain=yourdomain.com
; 将SMTP错误记录到error.log(默认为与sendmail.exe相同的目录)
; 取消注释以启用日志记录
; error_logfile=sendmail_error.log
; 创建调试日志为debug.log(默认为与sendmail.exe相同的目录)
; 取消注释以启用调试
; debug_logfile=sendmail_debug.log
; 如果您的SMTP服务器需要身份验证,请修改以下两行
;auth_username=
;auth_password=
; 如果您的SMTP服务器在SMTP身份验证之前使用POP3,请修改
; 以下三行
pop3_server=mail.yourdomain.com
[email protected]
pop3_password=mysecretpassword
; 要强制发件人始终为以下电子邮件地址,请取消注释并
; 使用有效的电子邮件地址填充。这只会影响“MAIL FROM”
; 命令,它不会修改邮件内容的“From: ”标题
[email protected]
; sendmail将在ehlo/helo中使用您的主机名和您的default_domain
; SMTP问候。如果需要,您可以手动设置ehlo/helo名称
hostname=
首次尝试时建议使用可选的错误和调试日志记录,以便在出现问题时知道问题所在。
Force_sender也是可选的,但建议避免服务器端混淆。
显然,mail.yourdomain.com、[email protected]和mysecretpassword应该是您SMTP服务器的相关信息。
现在重新启动WAMP服务(主要是Apache,以便PHP重新读取其配置)。
现在您可以像Unix用户一样使用PHP mail()语句了……