2010-02-23 21 views
2

我有一個PHP文件,工作正常,併發送郵件精細內的小型PHP郵件腳本:PHP郵件不會在一個腳本的工作,但確實在另一

$subject = "subject"; 
$mail_body = "mail body"; 
$name = "noreply"; 
$email = "[email protected]"; 
$recipient = "[email protected]"; 
$header = "From: ". $name . " <" . $email . ">\r\n"; 
mail($recipient, $subject, $mail_body, $header); 

但是,如果我參加了這一點,使它自己的文件,或將其放入不同的文件,它不起作用。沒有錯誤信息,並且不發送電子郵件。

沒有php ini設置命令,也沒有包含php文件。

任何想法,爲什麼它在較大的PHP腳本中工作,但不能自行工作?

+0

你得到了什麼錯誤信息,如果有的話? – meagar 2010-02-23 19:57:58

+0

你能提供一些有關它不起作用的細節嗎?有沒有錯誤信息?如果沒有,你能確認你已經配置php.ini輸出錯誤嗎? – sidereal 2010-02-23 19:58:23

+0

當你說它不起作用時,你的意思是它不發送郵件或者你收到錯誤? – 2010-02-23 19:58:23

回答

1

您的代碼一切正常。我測試了它,只是用我的地址替換了$收件人的電子郵件地址,並且它工作正常(我用我的公司電子郵件測試了它 - Outlook在Exchange服務器上,另一個測試用Hotmail地址 - 兩者都正常工作併到達了我的收件箱)。

  • 但要確保在$ mail_body新線 「\ n」 和 「\ r \ n」。正如可以在有關消息參數文檔讀取:

每一行應該以 LF(\ n)的分離。線不應該比70個字符大 。

  • 確保$ name和$電子郵件不包含禁用的字符,如<,>,以及新線(\ r \ n或\ r \ n)的。正如Michael指出的那樣可能導致email injection攻擊。您不希望您的聯繫表單被垃圾郵件發送者用作郵件平臺!

你應該考慮使用電子郵件庫像PHPMailer這將簡化開發,因爲mail()是先進的郵件相當棘手。大多數這些庫已經涵蓋了這些攻擊和標準......

+0

我知道一切都是好的代碼,但爲什麼不呢?獨立工作?它只適用於我剛纔寫的原始腳本。如果我將上述文本包裝在中並保存爲新文件,則郵件不會發送。 – CheeseConQueso 2010-02-23 20:41:27

+0

$收件人的地址在你的2個版本中是一樣的嗎?如果沒有,也許是攔截郵件的服務器端垃圾郵件過濾器......您可以嘗試添加回復郵件,返回郵件路徑,郵件ID和X-Mailer郵件頭以查看是否有幫助(請參閱php.net的例子)。 – AlexV 2010-02-23 20:52:47

+0

我試圖把相同的工作腳本放到它自己的php文件中,它不會發送... – CheeseConQueso 2010-02-23 20:54:00

相關問題