2012-04-09 115 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