ホームページ  >  記事  >  バックエンド開発  >  PHPでsmtp情報が正しいことを確認する方法

PHPでsmtp情報が正しいことを確認する方法

WBOY
WBOYオリジナル
2016-06-23 14:05:121000ブラウズ

最近 dede を使ってウェブサイトを構築しているのですが、SMTP がバックグラウンドでメールを送信できるようにする設定があるのを見ましたが、検証されていません。 PHP マスターの皆さん、入力された SMTP 情報が正しいかどうかをどのように確認しますか? 検証にはポート、ユーザー名、パスワードが含まれますか? PHP コードを実装して、これらのエラー メッセージを出力してください。100 点!ありがたい。


ディスカッションに返信 (解決策)

SMTP によるメール送信を有効にするための dede の設定用のプラグインをインストールしましたか?
ローカルにインストールした最新の dede にはこの機能の設定がないようです

上の階のダニエルに戻りますが、smtp 情報が正しいかどうかを確認するだけで済み、dede プラグインを作成する必要はありません。

//SMTP サーバーのポートを開きます
$fp = @fsockopen($smtp_host, 25);
if (!$fp)
echo "a4b561c25d9afb9ac8dc4d70affff419Error:0d36329ec37a2cc24d42c7229b69747a ".$smtp_host に接続できません"0c6dc11e160d3b678d68754cc175188a";

$smtp = array(	//1、EHLO,期待返回220或者250	array("EHLO ".$loc_host.$lb,"220,250","HELO error: "),	//2、发送Auth Login,期待返回334	array("AUTH LOGIN".$lb,"334","AUTH error:"),	//3、发送经过Base64编码的用户名,期待返回334	array(base64_encode($smtp_acc).$lb,"334","AUTHENTIFICATION error : "),	//4、发送经过Base64编码的密码,期待返回235	array(base64_encode($smtp_pass).$lb,"235","AUTHENTIFICATION error : ")	);		//5、发送Mail From,期待返回250	$smtp[] = array("MAIL FROM: <".$from.">".$lb,"250","MAIL FROM error: ");	//6、发送Rcpt To。期待返回250	$smtp[] = array("RCPT TO: <".$to.">".$lb,"250","RCPT TO error: ");	//7、发送DATA,期待返回354	$smtp[] = array("DATA".$lb,"354","DATA error: ");	//8.0、发送From	$smtp[] = array("From: ".$from.$lb,"","");	//8.2、发送To	$smtp[] = array("To: ".$to.$lb,"","");	//8.1、发送标题	$smtp[] = array("Subject: ".$subject.$lb,"","");$result_str="";	//发送smtp数组中的命令/数据	foreach($smtp as $req)	{	//发送信息	@fputs($fp, $req[0]);	//如果需要接收服务器返回信息,则	if($req[1])	{	//接收信息	while($result = @fgets($fp, 1024))	{	if(substr($result,3,1) == " ")	{	break;	}	};	if (!strstr($req[1],substr($result,0,3)))	{	$result_str.=$req[2].$result."<br>";	}	}	}	//关闭连接	@fclose($fp);	return $result_str;	}

SMTP のポート、ユーザー名、パスワードを確認しようとしたことはありませんが、ユーザー名とパスワードについては、それを要求してみるしかありません。 ...

function smtp_sockopen_relay()
{
$this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."n"); ->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out)
if (!($this->sock && $this) ->smtp_ok​​ ()))
{
$this->log_write("エラー: リレー ホスト ".$this->relay_host."n" に接続できません。");
$this->log_write("エラー: ".$ errstr. (".$errno.")n");
return FALSE;
}
$this->log_write("リレー ホスト ".$this->relay_host."n" に接続しました);
TRUE を返す;;

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。