PHP mail() 函数已停止工作
Posted
技术标签:
【中文标题】PHP mail() 函数已停止工作【英文标题】:PHP mail() function has stopped working 【发布时间】:2012-04-22 06:50:11 【问题描述】:我一直在使用 MAMP 解决方案堆栈 (v2.0.5) 开发一个 Web 应用程序,其中包括:
Mac OS X (v10.7.3) Apache v2.2.21 mysql v5.5.9 php v5.3.6我一直在使用 PHP mail()
函数向新注册的用户帐户发送激活 URL:
$body = "Thank you for registering. To active your account, please click on this link:\n\n";
$body .= BASE_URL . 'activate.php?x=' . urlencode($e) . "&y=$a" . "&z=$bs";
mail($trimmed['email'], 'Registration Confirmation', $body, 'From: admin@tester.com');
但是,似乎过了一段时间......这才停止,现在我无法在我的测试用户帐户中收到任何这些消息。
我的php.ini
文件位于:/Applications/MAMP/bin/php/php5.3.6/conf/php.ini
使用默认设置:
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =
它曾经完美地工作到最近,但现在失败了。我没有故意更改任何我知道可能导致此停止的设置。
经过大量谷歌搜索和阅读后,您似乎必须设置 SMTP 服务器才能将电子邮件从本地主机发送到另一个电子邮件地址才能正常工作,但我非常肯定它曾经工作过,我收到电子邮件...老实说!
我希望有人可以提供帮助。非常感谢。
更新解决: 基本上整理好了。开始尝试使用 PEAR 和 Mail 插件,但发现它太可怕了。最终使用外部 SMTP 服务器和 PHPMailer,好多了。
有用信息: http://www.askapache.com/php/phpfreaks-eric-rosebrocks-phpmailer-tutorial.html https://orangsetya.wordpress.com/2007/09/12/send-mail-using-smtp-authentication-phpmailer-script
【问题讨论】:
那么你必须使用一些服务器作为中继(在你的例子中是本地主机)来发送你的电子邮件。也许该服务器由于垃圾邮件而被列入黑名单? 你检查你的垃圾邮件箱了吗?我在 ec2 实例上遇到了这个问题 - 创建 SPF DNS 记录解决了这个问题 当您说中继服务器时,您是说我 Mac 上的某个 SMTP 服务器最初充当了通过 localhost 发送这些电子邮件的手段吗?现在是否已在目标邮件服务器上被列入黑名单? 根据您的更新,我想我会加 2 美分。梨很烂。我会不惜一切代价避免它。 我完全同意!我因无法控制的错误消息而感到非常痛苦:pear.php.net/bugs/bug.php?id=9950 【参考方案1】:基本上是排序的。开始尝试使用 PEAR 和 Mail 插件,但发现它太可怕了。最终使用外部 SMTP 服务器和 PHPMailer,好多了。
有用信息:http://www.askapache.com/php/phpfreaks-eric-rosebrocks-phpmailer-tutorial.html https://orangsetya.wordpress.com/2007/09/12/send-mail-using-smtp-authentication-phpmailer-script
干杯。
【讨论】:
【参考方案2】:使用 mail 命令创建一个新脚本并将值硬编码为字符串,以查看您是否正在接收电子邮件。还要检查您的操作系统是否有任何更新对您的 apache/php 安装进行了任何修改。
试试这样的简单脚本:
<?php
mail('youremail@example.com', 'My Subject', 'My Message');
?>
【讨论】:
由于我一直在使用 MAMP 环境,我的印象是 Apache 或 PHP 都不应该随着 Mac OS X 更新而更新或更改。我已经重新安装了 MAMP(非 Pro),但这并没有什么不同。我还使用了之前备份的旧脚本,它们也无法正常工作,电子邮件发送到两个不同的目标域。以上是关于PHP mail() 函数已停止工作的主要内容,如果未能解决你的问题,请参考以下文章