2010-01-04 27 views
0

我有(我認爲)是一個簡單的腳本來發送短信箱:PHP郵件功能,給予致命錯誤,但郵件仍發送

<?php 

$to = "[email protected]"; 

$subject = "Amendment required"; 
$message = "Employee: " . $_POST['employees'] . "<BR /><BR />Notes: " . $_POST['notes'] . "<BR /><BR />Reported By: " . $_POST['empID'] . "."; 
$from = "[email protected]"; 
$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From: $from"; 
mail($to,$subject,$message,$headers); 

?> 

(我已經改變了電子郵件地址隱私的原因)

當這個被加載時,延遲一段時間後,我們得到的錯誤

「致命錯誤:最長30秒的執行時間超過了......」 - 但郵件發送成功。

我在這裏錯過了一些簡單的東西嗎?

很多感謝

萊迪

+0

它是否獨立於您在「to」字段中設置的電子郵件地址發生?我正在考慮接收方的某種反垃圾郵件措施.. – naivists 2010-01-04 11:40:52

+0

我試圖更改電子郵件地址,現在我收到了另一個錯誤:警告:mail()[function.mail]:SMTP服務器響應: 530中繼不允許.. – leddy 2010-01-04 13:02:16

+0

下一個問題,如何在您的PHP.ini中配置SMTP,您如何從您的本地SMTP服務器,從您的提供商的服務器發送這些電子郵件?檢查php.ini文件中的[mail function]部分。 – naivists 2010-01-04 22:08:11

回答

3

使用mail發送單個電子郵件不應花費30秒。決不。除非您向數百或數千個收件人發送郵件,否則您應該與服務器管理員通話,或者電子郵件大小爲幾十兆字節。但似乎並非如此。我猜想PHP在內部調用的sendmail命令由於某種原因需要很長時間才能響應。

這是您正在執行的完整腳本嗎?

+0

看看PHP標籤下方的原始帖子。 '等'寫在那裏,所以應該有一些資源激勵(顯然,但不是)不相關的代碼段。 – 2010-01-04 10:58:54

+0

,這不應該是超時的原因,因爲根據OP,電子郵件被髮出(超時會發生在此之前) – 2010-01-04 11:00:14

+0

這聽起來有點奇怪,但是如果超時被精確地觸發郵件是在PHP Core中發送的,而不是函數返回後?我不確定這是否可能,但無論如何。 – 2010-01-04 11:06:27

1

嘗試使用set_time_limit(0)刪除PHP執行時間限制。它可能無法正常工作,如果你有safe_mode,但它應該工作,否則。

+0

這是治癒症狀,但不是原因。 – Gordon 2010-01-04 10:57:28

+0

如果他正在循環併發送大量電子郵件,它可能很容易發生。郵件()很慢。我已經看到它需要4-5秒發送6封電子郵件。 – Erik 2010-01-04 11:00:30