2012-04-09 178 views
3

我一直在发展与毫安解决方案堆栈(V2.0.5),其中包括一个Web应用程序:PHP mail()函数已停止工作

  • 的Mac OS X(v10.7.3)
  • 阿帕奇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: [email protected]'); 

然而,似乎过了一段时间......这个刚刚停止,现在我没有收到任何这些这些消息对我的测试用户帐户。

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 = [email protected] 

; 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

+1

那么你必须使用一些服务器作为中继(即本地主机在你的情况)发送你的电子邮件。也许该服务器因垃圾邮件而被列入黑名单? – 2012-04-09 23:08:49

+1

你检查了你的垃圾邮件吗?我在ec2实例上创建了这个问题 - 创建SPF DNS记录解决了问题 – 2012-04-09 23:15:23

+0

当您说中继服务器时,您是否说我的Mac上的某个SMTP服务器充当通过本地主机发送这些电子邮件的方式?现在已经在目标邮件服务器上被列入黑名单? – leokennedy 2012-04-09 23:48:15

回答

2

与邮件命令和硬代码作为字符串创建一个新的脚本的价值,就看你是recieving电子邮件。还要检查你的操作系统的任何更新是否对你的apache/php安装进行了任何修改。

尝试一个简单的脚本是这样的:

<?php 
    mail('[email protected]', 'My Subject', 'My Message'); 
?> 
+0

因为我一直在使用MAMP环境,我的印象是Apache或PHP应该已经使用Mac OS X更新进行更新或更改。我已经重新安装了MAMP(非Pro),但这并没有什么区别。我还使用了我之前从备份中得到的旧脚本,他们也不工作,电子邮件发送到两个不同的目标域。 – leokennedy 2012-04-09 23:49:52