わかりました、php を使用したソケット プログラミングを初めて試みています。これは、しばらくの間やろうと思っていたものですが、仕事で行ったアプリケーションでバウンスされた電子メールの追跡が機能しなかったという事実によってスピードアップしました。そのため、すべての電子メール アドレスをチェックして、それらが有効であることを確認する必要があります。
コマンド ラインから telnet を使用して電子メール アドレスを検証し、電子メール アドレスを送信する方法を学習しましたが、問題はありません。私が落ち込んでいるのは、「HELO」コマンドを使用してサーバーと通信するときです。
しかし、これがtelnet接続を確立したかどうかさえわからないので、ここでは完全に間違った領域にいる可能性がありますが、最後のvarダンプは接続が確立されていることを示唆しています.
「n6si3992361paw.22」を除いて、コマンドラインでtelnet接続を行ったときの接続応答は同じですが、それは各接続のある種の一意の識別子であると思います。
<?php
$target = "aspmx.l.google.com";
$port = 25;
$errno = "";
$errstr = "";
$timeout = 9;
$newline = "\n\r";
$logArray = array();
$connect = fsockopen($target, $port, $errno, $errstr, $timeout);
$smtpResponse = fgets($connect, 4096);
if(empty($connect)) {
$logArray["error"][] = "Failed to connect: $smtpResponse";
var_dump($logArray);
exit;
} else {
$logArray['connection'][] = "Connected to: $smtpResponse";
}
fputs($connect, "HELO" . $newLine);
$smtpResponse = fgets($connect, 4096);
$logArray['connection'][] = "$smtpResponse";
var_dump($logArray);
$logArray の結果:
array(1) { ["connection"]=> array(2) { [0]=> string(57) "Connected to: 220 mx.google.com ESMTP n6si3992361paw.22 " [1]=> string(0) "" } }