如前所述,对于 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 重新读取其配置)。
现在您就可以正常使用了,可以使用 PHP mail() 语句,就像您是 Unix 用户一样...