2010-06-03 88 views
4

我似乎無法讓我的PHP腳本發送電子郵件。爲什麼這個短的PHP腳本發送電子郵件?

我檢查我的電子郵件帳戶設置上展望:

<?php 
echo "Does this page work?"; 
mail('my email address', 'test subject', 'test message'); 
?> 

首先,我有如下設置php.ini文件中的郵件功能設置。它不需要身份驗證,其端口爲25,其加密連接類型爲「自動」。鑑於這種我相應的配置我的php.ini文件:

SMTP = ssl://smtp1.iis.com 
smtp_port = 25 

然後我設置:

sendmail_from = my email address 

echo語句打印出在瀏覽器中,所以我知道PHP文件被識別和處理。但瀏覽器還顯示以下錯誤:

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\xampp\htdocs\mailtest.php on line 3 

我已經明確設置sendmail_from,所以我不知道還有什麼要做。我也嘗試從php.ini文件的SMTP設置中刪除'ssl://'部分,並配置php5.ini文件。無論如何,我應該配置哪些.ini文件?

回答

1

我現在有一個回答我的問題......

我用phpinfo()函數來找出哪些php.ini文件我應該正在編輯。事實證明,我的服務器文件夾中有3個這樣的文件可用。兩個在PhP文件夾下(分別命名爲php.ini和php5.in),另一個在apache/bin文件夾中。使用phpinfo()函數,我可以確定我正在編輯錯誤的.ini文件(我查看了我正在設置的參數並且沒有更改)。一旦我編輯了正確的(apache/bin中的)Warning:mail()[function.mail]:「sendmail_from」...錯誤停止發生。

然後,爲了獲取郵件發送,我編輯了正確的.ini文件最初提出我的問題:

SMTP = myoutgoingmail.com (the same setting as my mail program - outlook) 
smtp_port = (the same as my mail program - oultook) 

sendmail_from = myemailaddress.com 
0

我不想指出如果這是一個故意拼寫錯誤,但在您的SMTP行,不應該是ssl:// smtp 1.iis.com?

+0

固定的錯字 - 感謝它指向了 – RoryG 2010-06-03 21:05:00

+0

沒問題,不知道是否你手工輸入或複製粘貼它。有時它只需要第二雙眼睛。 – Nic 2010-06-03 21:05:47

0

您需要爲mail()函數傳遞'From'標頭。我相信sendmail_from設置僅適用於Windows環境。試試這個:

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

我不認爲如果他不在Windows環境中,php會抱怨它未被設置。此外,該警告引用Windows路徑名稱。 – 2010-06-03 21:05:45

+0

試過 - 它沒有工作。我在一個Windows環境中,所以我猜測'From'標題與php.ini配置 – RoryG 2010-06-03 21:06:44

2

要獲得關於「這些.ini文件中我應該配置」的問題,你可以運行phpinfo()函數來查看服務器的配置。這將列出所有配置文件的路徑。

+0

做同樣的事情,所以我跑了phpinfo(),並指出我正在運行php5.2.5,所以我假設我應該編輯php5的.ini? 更有趣的是,我低頭看了一下規格書,看了一下: SMPT localhost 但是那是我認爲我正在改變其他東西(如我原來的問題所示)。這可能是我的問題的線索!謝謝 – RoryG 2010-06-03 21:21:21

+1

當你看看'phpinfo()'頁面時,第一個表格(頁面頂部的那個)的第六行列出了「配置文件(php.ini)路徑」。列出的文件是配置中使用的文件。確保這是你正在編輯的那個! – eykanal 2010-06-03 22:47:52

4

你沒有註釋sendmail_fromphp.ini,是嗎?它應該是這樣的:

; For Win32 only. 
sendmail_from = [email protected] 

不喜歡這樣的:

; For Win32 only. 
;sendmail_from = [email protected] 

的唯一原因PHP說其沒有設置..是,好吧,如果它沒有設置。

編輯

,我能想到的(對於警告)其他唯一的問題是,你可能是編輯錯誤的php.ini文件。如果它實際上是設置,PHP不應該發出該警告。我相信你的平臺上的默認PHP配置\xampp\php\php.ini

EDIT2

您的SMTP主機可以使用一種叫做pop-before-smtp。嘗試使用另一個郵件提供商確實使用SMTP(密碼)身份驗證來排除。

+0

是的 - 儘管在我注意到它之前,我花了幾個眼睛......沒有幫助 – RoryG 2010-06-03 21:10:13

+0

@RoryG如果你的修改沒有反映在'phpinfo()中,那麼你很可能正在編輯錯誤的php.ini文件' – 2010-06-03 21:41:16

+0

是的 - 我得出了這個結論,現在警告已經停止,但是仍然沒有發送電子郵件...對於其他可能有相同問題的人來說,它反正是我的平臺,它的\ xampp \ apache \ bin \ php.ini – RoryG 2010-06-03 23:24:56

1
sendmail_from = [email protected] 

心靈的:應該是=

+0

修正了這個錯字。我應該剪切和粘貼,但不想暴露我的細節... – RoryG 2010-06-03 21:12:31

+0

沒問題,不知道你是否手工輸入或複製粘貼它。有時它只需要第二雙眼睛。 :-P – Phliplip 2010-06-03 21:16:47