|
|
 |
課題
Java
SMTP利用のメール送信 |
|
1.プログラムの仕様
TCP/IPのSMTPプロトコルを利用して、メール送信のJavaアプリケーションを作成します。
フォームはSwingを利用してネットワークの送受信を行います。
プログラムのクラスは MailTest とし、次のような流れになります。
- 宛先と送信者名のメールアドレスをテキストフィールドに入力する。
- 使用するメールサーバ名(SMTPホストサーバ名)をテキストフィールドに入力する。
- テキストエリア(上段)のメッセージ欄にメールの本文を入力する。
- 送信ボタンをクリックし、SMTPプロトコルに従いホストサーバの25番ポートにデータを送信する。
- 同時にホストサーバからの受信内容(応答コード+メッセージ)をテキストエリア(下段)の通信欄に表示する。
メソッドの一覧
| No. |
戻り値 |
メソッド名 |
引数 |
内容 |
| 1 |
---- |
(コンストラクタ) |
なし |
フォームの生成とイベント登録 |
| 2 |
なし |
actionPerformed |
(ActionEvent) |
ボタンクリック時のイベントハンドラ メールの送受信処理をスレッドで起動 |
| 3 |
なし |
sendMail |
なし |
メールの送受信処理(SMTPプロトコル) |
| 4 |
なし |
send |
送信データ(String) |
送信データを通信欄に設定しホストに送信 |
| 5 |
なし |
receive |
なし |
ホストからのメッセージを受信し通信欄に設定 |
| 6 |
なし |
(static) main |
パラメータ(String[]) |
自分自身をフレーム(Frame)に設定し画面表示 |
|
2.SMTPプロトコルの説明
SMTP(Simple Mail Transfer Protocol)は、メールサーバ間でのメッセージの送信に利用されるプロトコルです。
反対にPOP3(Post Office Protocol)がメッセージの受信用のプロトコルです。
サーバは25番のポートで接続を待ち、クライアントは25番のポートにコマンドを送ります。
SMTPの基本コマンドには次のようなものがあります。
| No. |
コマンド |
内容 |
| 1 |
HELO クライアント側のホスト名 |
(hello) 通信開始。クライアント側のホスト名の通知 |
| 2 |
MAIL FROM: 送信者名 |
(mail) メールの送信者名の通知 |
| 3 |
RCPT TO: 受信者アドレス |
(receipt) メールの受信者アドレス(宛て先)の通知 複数の相手の場合は複数回実行 |
| 4 |
DATA |
(data) メール本文の送信開始 本文は本コマンド後に1行毎に送信し、最終データはピリオドのみを送信する。 (1行は1000文字以下) |
| 5 |
RSET |
(reset) 送信手順の初期化(MAIL,RCPT,DATAの破棄) |
| 6 |
NOOP |
(no operation) サーバの確認(タイムアウトを防ぐ) |
| 7 |
VRFY ユーザ名 |
(verify) 指定したユーザ名がサーバに存在するかを確認 |
| 8 |
EXPN ユーザ名 |
(expansion) 指定したユーザ名の実際に配信されるメールアドレスを確認 |
| 9 |
QUIT |
(quit) メール交換の終了 |
SMTPの主な応答コードには次のようなものがあります。
| 応答コード |
内容 |
| 211 |
システムの状態の表示 |
| 214 |
ヘルプメッセージ |
| 220 |
サーバの準備完了 |
| 221 |
SMTPコネクションの終了 |
| 250 |
要求された処理が完了 |
| 354 |
メール本文の入力開始 |
| 550 |
メールボックスが用意されていないため、処理が中断された |
|
|
| |
 |
|