PHP學習筆記一:誰動了你的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的項都很激動.雙擊打開,配置了相關的參數,如截圖所示:
更正:此處忘了補發圖片,特此道歉! 7-5號補正.
說句實話,這一步做的比較腦殘,那上面是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 .打開郵件的內容,和我在頁面輸入的內容完全一致,而且有些內容還是從本地的數據庫中讀出來的。
作者:田浩宇

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
