誰動了你的mail(),PHP?
PHP編寫郵件傳送的函式時候,會出現一個很奇怪的問題,那就是: Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in ....... of course,這個紅色不是網頁上顯示的,只是為了這樣說明,不過你可以設定顯示的顏色,這個嘛,這個要留給你考究了。
通過internet搜尋了相關的回答,包括相關的技術部落格,大家都是很簡單的闡述瞭解決方案.大多是隻是提到修改:php.ini 中的[mail function] 函式,將smtp的相關功能進行開啟即可,以下是詳細的修改: [mail function] SMTP = localhost smtp_port = 25 sendmail_from = youremailUsual@domin.com ;這裡有必要註釋下,這個郵件是From方面. sendmail_path = "" ;起初是空的,這裡在後面做說明. mail_add_x_header = on ;這裡是預設on的 無需更改
到這一步,修改完畢,重啟apache,當然這個操作,我實在CMD下操作的,話說這個操作,還鬧了一個小笑話.How stupid i am !
重啟完畢,重新整理頁面,錯誤仍然存在.
這裡陷入糾結的地步,stackoverflow 中提到了IIS(windows 預設的伺服器),在控制皮膚-管理工具下竟然找不到這一項,由於是win7的緣故,在新增和刪除程式下,把它開啟即可,注意操作,後來可以在管理工具下找到,雙擊開啟,此時看到smtp的項都很激動.雙擊開啟,配置了相關的引數,如截圖所示:
說句實話,這一步做的比較腦殘,那上面是ASP.net的選項,管你PHP毛事.
痛定思痛,維基百科查了smtp的協議詳細解釋,連線Click Here:簡單郵件協議 回來繼續修改,[mail function],如下: ;以126郵箱的設定為例子 SMTP = smtp.126.com smtp_port = 25 sendmail_from = my126EmailAddress@126.com sendmail_path = "" mail_add_x_header = on
同時修改了程式中$from變數的數值,為了保持一致.
[因為之前做了測試,程式中新增 phpinfo()函式,執行後,在頁面搜尋 mail項,你會發現會有一個 Localhost Value 和 master Value ,當然這個很好理解,Localhost Value指的是你程式中設定的數值,master Value是php.ini的設定] 執行後,神奇的錯誤消失了,不過出現瞭如下的錯誤: mail(): SMTP server response: 553 You are not authorized to send mail, authentication is required aaf353e4-8ac5-416e-9cd5-6b54fc592764
之後改了其他的郵箱,如QQ,Gamil等,錯誤都如上面提示,看了一個熟悉的單詞authorized ,就明白啥意思了.
到這一步貌似離成功不遠了,想起以前使用客戶端配置郵箱使用者的時候,最後一步都會詢問你是不是需要開啟"伺服器身份驗證".最後一不小心搜到了一個叫做sendmail的檔案包,下載地址如下:sendmail 之後,最好在PHP的根目錄下新建一個資料夾,取名叫做:sendmail,之後託壓縮包進去,再解壓出來,修改一個叫做sendmail.ini的檔案,修改的地方如下:
;take the fomus email provider in China 126 for example
[sendmail]
smtp_server= smtp.126.com
smtp_port=25
default_domin =126.com
auth_username= strings in your email address before char '@'
auth_password= your password which allow you to login in your email-box
hostname= 126.com
之後,你就要修改 php.ini,還是老地方: SMTP = smtp.126.com ;這裡修改為localhost 也是一樣,其他選項保持不變. smtp_port = 25 sendmail_from = my126EmailAddress@126.com sendmail_path = "your sendmail path/sendemail.exe -t " ;當然這個路徑的前半部分必須包括你的PHP安裝的根目錄,將"\"換成"/",我想是必須要做的. mail_add_x_header = on
到這裡配置完成,重啟你的apache,重新整理頁面,錯誤的消失,因為程式中設定的$to是自己的126和QQ郵箱,當然迴圈發的.
當看到桌面右下角QQ上彈出三豐郵件提示的時候,I know that I resolve it .開啟郵件的內容,和我在頁面輸入的內容完全一致,而且有些內容還是從本地的資料庫中讀出來的。
Happiness!
相關文章
- JavaScript誰動了你的程式碼JavaScript
- 誰動了我的 Redis ?Redis
- 誰動了我的MySQL?MySql
- 誰動了我的記憶體之 PHP 記憶體溢位PHP記憶體溢位
- 誰動了我的記憶體之PHP記憶體溢位PHP記憶體溢位
- 誰動了我的程式碼!?
- 誰動了我的指標? (轉)指標
- 《資料安全法》正式實施 動了誰的乳酪?紅了誰的櫻桃?
- ES資料沒了?誰動了我的資料?
- 你以為你懂php了?PHP
- 《資料安全法》動了誰的“乳酪”
- 誰貪佔了我的系統資源 php-fpmPHP
- 誰阻礙了你做元件化開發?元件化
- 誰掌握了工具誰便是強者 誰掌握了資訊誰便是勝者
- 是誰動了程式設計師的尊嚴?程式設計師
- awr 自動mailAI
- 誰動了我的DevOps:DevOps風險測繪dev
- 你打算賺誰的錢?
- 誰掌握了感測器,誰就掌握了物聯網的未來
- Claws Mail 3.11.0 修復了POODLE 漏洞AI
- Python自動化測試框架,誰才是你的唯一?Python框架
- 刷爆了!BAT這場AI晶片之戰,你更支援誰?BATAI晶片
- Google回來了!誰在期待?誰在恐慌?Go
- 用linux下的php3發E-MAIL (轉)LinuxPHPAI
- 誰動了我的 Linux?原來 history 可以這麼強大!Linux
- 誰動了我的資料?如何防止資料偷偷溜走?
- GitLab,是誰給了你歧視中國程式設計師的勇氣?Gitlab程式設計師
- PHP - 什麼是 PHP? 為什麼用 PHP? 有誰在用 PHP?PHP
- 誰下載了你的檔案?沒有管控等於預設風險存在
- 誰阻擋了Linux的步伐?(轉)Linux
- 不同人對BUG的反應,程式設計師:誰動了我的程式碼?程式設計師
- 傳聞:誰控制了前端入口,誰就是IT行業的主宰!看完驚呆前端行業
- Fedroa 28 php 和 mail 命令,郵件發不出去PHPAI
- 如何利用PHP通過mail方法傳送郵件【轉】PHPAI
- mailAI
- 對話Jack Clark:誰掌握了算力,誰就掌控了AI未來發展AI
- 誰說前端需要懂 Nginx 了?前端Nginx
- 誰說 JavaScript 很簡單了?JavaScript