SMTP の基礎
TCP/IP に基づくインターネット プロトコルの一般的なコマンド形式は、リクエスト/レスポンス方式で実装され、すべてテキスト情報が使用されるため、処理が容易になります。 SMTP は Simple Mail Transfer Protocol の略称で、クライアントがサーバーに電子メールを送信できるようにします。したがって、以下で説明するコマンドは、クライアントがサーバーに要求命令を送信することを指し、応答はサーバーからクライアントに返される情報を指します。
SMTP は、コマンド ヘッダーとメッセージ本文の 2 つの部分に分かれています。コマンドヘッダーは主にクライアントとサーバー間の接続、検証などを完了します。プロセス全体は複数のコマンドで構成されます。各コマンドがサーバーに送信されると、サーバーは応答情報 (通常は 3 桁の応答コードと応答テキスト) を返します。さまざまなサーバーから返される応答コードはプロトコルに準拠していますが、応答テキストは準拠していません。各コマンドと応答の最後にはキャリッジ リターン文字があるため、コマンドと応答は fputs() と fgets() を使用して処理できます。 SMTP コマンドと応答メッセージは 1 行です。メッセージ本文は電子メールの本文であり、最後の終了行は別の「.」で終わる必要があります。
クライアントでよく使用される SMTP コマンドは次のとおりです:
HELO ホスト名: サーバーに挨拶し、使用するマシンの名前をクライアントに伝えます。自由に入力できます。
MAIL FROM: sender_id: サーバーに送信者のアドレスを伝えます。
RCPT TO:receiver_id: メッセージを受信するようにサーバーに指示します 送信者のアドレス
DATA: レターの内容は以下に送信され、 のみを含む特別な行で終わる必要があります
RESET: 前のコマンドをキャンセルし、最初からやり直す
VERIFY userid: アカウントが存在するかどうかを確認します (このコマンドはオプションです。サーバーがサポートしていない可能性があります)
QUIT: 接続を終了して終了します
サーバーから返される応答情報は (形式: 応答コード + スペース + 説明) です:
220 サービスの準備が完了しました (ソケット接続が成功すると、この情報が返されます)
221 処理中です
250 リクエスト電子メールのアクションが正しく、完了しました (この情報は、HELO、MAIL FROM、RCPT TO、QUIT の場合に返されます)コマンドが正常に実行されました)
354 データの送信を開始し、で終了します (DATA コマンドが正常に実行された場合、この情報が返されます。クライアントは情報を送信する必要があります)
500 構文エラー、コマンドが認識できません
550 コマンドを実行できません、電子メールが無効です