【发布时间】: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