2011-12-12 76 views
2

我是php編程新手,對聯網知之甚少(我從2周前開始),所以請耐心等待。php mail()函數

  1. 最近我遇到了mail()函數。首先,我只是使用mail()寫了簡單的代碼,沒有在php.ini文件中進行任何修改,但它自然不起作用。所以我搜索了這個事業。我發現,對於[郵件功能]中的linux,我們必須輸入sendmail_path的smtp服務器名稱。我在yahoo.com有一個帳戶,所以我輸入了smtp.mail.yahoo.com,但這似乎不起作用。所以我再次搜索了一下,並知道你的ISP的SMTP服務器是必需的。我的程序是一個簡單的測試程序,我很想看到地址的收件箱中的郵件是由於php的代碼。

  2. 也沒有Apache服務器(這是我使用的迴應PHP代碼)具有SMTP支持?阻止它傳遞信息的是什麼?如果您覺得我需要閱讀,請通過鏈接幫助我。

  3. yahoo's/gmail的smtp和我的isp的smtp是否有區別,還是我的isp的smtp與yahoo的smtp通信發送郵件(因爲儘管我們的isp更改了,但我們仍然使用相同的yahoo帳戶發送郵件) ?

+0

PHP只需要一個SMTP服務器來發送郵件。不要緊,如果它是您的ISP或雅虎或谷歌(您的ISP與雅虎的SMTP服務器無關)。 'sendmail_path'應該設置爲你服務器上的'sendmail'可執行文件(如果你不知道,請不要觸摸它)。 –

回答

2
  1. 您誤解了信息。 sendmail_path指令不指望服務器名稱,它期望sendmail二進制文件的路徑。在Linux下,不能使用外部SMTP服務器和普通的mail()函數。

  2. Apache是​​一個Web服務器。如果提供HTTP但不提供任何其他服務(如SMTP或FTP)。也許你對Microsoft IIS感到困惑。

  3. 不知道我明白這個問題,但現在,幾乎沒有人允許使用他的SMTP服務器發送第三方郵件。如果你想發送電子郵件爲@yahoo.com,你將不得不使用雅虎的SMTP服務器。

一些額外提示:

  • Linux服務器通常有一個本地的MTA(郵件傳輸代理)安裝,這樣你就不必處理外部SMTP服務。目前尚不清楚您是否在觸摸任何內容之前嘗試發送電子郵件。

  • 如果您想通過Yahoo或Gmail或某些類似服務發送電子郵件,您最好使用一些第三方PHP庫,如PEAR :: Mail,PHPMailer或Swift Mailer。 PHP本身不支持電子郵件身份驗證。

+0

我確實嘗試發送電子郵件沒有任何修改,但無濟於事 –

+0

它是喜歡從我的機器發送郵件我將不得不使用我的isp的smtp服務器,但從雅虎發送它我將不得不使用雅虎的smtp ...我可以通過代碼訪問雅虎的smtp服務器,如果我有一個帳戶 –

+0

@SnuS - 如果你可以用Outlook或Thunderbird發送郵件(我不知道這是雅虎的情況),你可以用PHP發送郵件。 –

2

您應該聯繫您的ISP以獲取您的SMTP服務器名稱和憑證。許多SMTP服務器在發送消息之前需要有效的登錄憑據以避免垃圾郵件發送者未經授權使用。

Apache可以與郵件服務器如Sendmail的互動,但沒有內置支持。

請參閱Sendmail website有關安裝自己的SMTP服務器,或安裝使用爲您的操作系統或分發的軟件包。

+0

所以有沒有辦法(除了使用),其中我可以通過代碼直接發送郵件...也見我的第三個問題,我剛剛添加 –

+0

這是正確的。您必須有權訪問郵件服務器來處理您的電子郵件,並將其傳遞給預期的收件人。 –

+0

PLZ也看到我剛剛添加的第三個問題 –