110 likes | 245 Views
第6章 インターネットアプリケーション. 6.1 インターネットアプリケーション 6.2 Java によるネットワーク処理 6.3 電子メール 6.4 Web アプリケーション 6.5 チャットアプリケーション. 6.3 電子メール 6.3.1 電子メールの仕組み. ① メーラ( Outlook など)で宛先メールアドレス,メール表題,メール本文をメーラ( Outlook など)で作成して,企業・大学,プロバイダ等に送信。 ② 企業・大学,プロバイダ等に設置された MTA ( Message Transfer Agent )が連携して宛先メールアドレスに送信。
E N D
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール 6.4 Webアプリケーション 6.5 チャットアプリケーション
6.3 電子メール6.3.1 電子メールの仕組み6.3 電子メール6.3.1 電子メールの仕組み ① メーラ(Outlookなど)で宛先メールアドレス,メール表題,メール本文をメーラ(Outlookなど)で作成して,企業・大学,プロバイダ等に送信。 ② 企業・大学,プロバイダ等に設置されたMTA(Message Transfer Agent)が連携して宛先メールアドレスに送信。 ③ MTA(Message Transfer Agent)にメーラを通じてアクセスし,利用者宛メッセージを取り込む。 企業・大学・ プロバイダ等 メーラ (Outlookなど) メーラ (Outlookなど) MTA MTA メール ボックス MTA 企業・大学・ プロバイダ等 企業・大学・ プロバイダ等
6.3.2 電子メール送信プロトコル 意味 例 コマンド SMTP(ポート番号25)を用いてメールを配信する。 helo 送信側ホスト名の指定 Helo mail.aaa.co.jp mail 送信者メールアドレスの指定 Mail from: kazuo.ccc.ac.jp rcpt 受信者メールアドレスの指定 rcpt to: junko.ccc.ac.jp Data Subject:test Hello! . メッセージ開始。 メッセージ終了は“.”のみの行で指定 data quit SMTPサーバとのコネクション切断 quit
代表的な応答コード 応答コード 意 味 220 サービス準備完了。 221 コネクションのクローズ。 250 要求コマンド処理の正常終了 251 メール転送処理においてユーザが存在しない。 354 メッセージ入力開始。“.”のみの行でメッセージ入力終了。 421 サービス要求を受け付けられない。コネクションがクローズされる。 451 サーバでエラーが起きた。要求されたコマンドが中止された。 500 コマンドの構文エラー。 501 パラメータや引数の構文エラー。 502 サポートされていないコマンドが入力された。 503 コマンドの指定順序が不正。 504 コマンドのパラメータが実装されていない。 550 要求されたコマンドは実行されない。メールボックスがない。 551 サーバに存在しないユーザである。 コマンドを入力するとSMTPからの応答が返却される。
Telnetサービスを利用したSMTPサーバへの接続 220aaa.bbb.co.jp ESMTP Sendmail 9.11.8/9.11.8;Thu,11 May2010 14:23:51 +0900 (JST) helo mail.aaa.bb.co.jp 250 aaa.bbb.co.jp Hello[191.167.181.212],pleased to meet you mail from:taro@bbb.co.jp 250 2.1.0 taro@bbb.co.jp... Sender ok rcpt to:jun@kkk.co.jp 250 2.1.5 jun@kkk.co.jp... Recipient ok data 354 Enter mail,end with"."on a line by itself ohayou kore ha test mail dayo. . 250 2.0.0 k6d8NfG10375 Message accepted for delivery quit 221 2.0.0 idea.net.co.jp closing connection ホストとの接続が切断されました. 送信側ホスト名の指定 Windowsのコマンドプロンプトから入力する例 送信元メールアドレスの指定 宛先メールアドレスの指定 メッセージの開始は,data[ENTER] メッセージ入力 メッセージの終了は「.」のみの行 コネクションの切断 「<3桁の数字> <メッセージ>」は,SMTPからの応答メッセージ
SMTPコマンドと応答メッセージ 受信(サーバ) 送信(クライアント) Connect to ... 220 <サーバドメイン> helo <送信側ホスト名> コマンド入力によってSMTPサーバと会話的に処理がなされる。 250 (正常終了) mail from : <送信元メールアドレス> 250 (正常終了) rcpt to : <宛先メールアドレス> 250 (正常終了) data 354 (メッセージ入力開始) <メッセージ文> . 250 (正常終了) quit 221 (コネクションのクローズ)
TCPコネクションを実現するJavaプログラム例(その1/3)(入出力をスレッドとして扱う)TCPコネクションを実現するJavaプログラム例(その1/3)(入出力をスレッドとして扱う) import java.net.*; import java.io.*; public class TCPClient { static String host = "localhost";//自分自身がサーバ static int port = 6000 ;//ポート番号を6000とする BufferedReader in ;// 入力用バッファ BufferedReader keyin ;// キー入力用バッファ static BufferWriter out ;// 出力用バッファ static Socket serverSocket; // テキストと若干異なるが,以下のようにするのが望ましい。 public static void main(String[] args){ try { serverSocket = new Socket(host, port);// ソケット生成 ServerConnection connection = new ServerConnection(serverSocket); KeyConnection keyconnection = new KeyConnection(serverSocket); connection.start(); keyconnection.start(); } catch(IOException e){System.out.println(e);} } }
TCPコネクションを実現するJavaプログラム例(その2/3)サーバとのコネクション(入出力をスレッドとして扱う)TCPコネクションを実現するJavaプログラム例(その2/3)サーバとのコネクション(入出力をスレッドとして扱う) class ServerConnection extends Thread { BufferReader in; ServerConnection(Socket socket){ try { in = new BufferedReader( new InputStreamReader(socket.getInputStream())); } catch(IOException e){} } public void run(){ try { String line = in.readLine(); if(line != null) System.out.println("From Sever: " + line); } catch(IOException e){} } }
TCPコネクションを実現するJavaプログラム例(その3/3)キー入力(入力と出力をスレッドとして扱う)TCPコネクションを実現するJavaプログラム例(その3/3)キー入力(入力と出力をスレッドとして扱う) class KeyConnection extends Thread { BufferedReader keyin; BufferedWriter out; Socket socket; KeyConnection(Socket socket){ thise.socket = socket; keyin = new BufferedReader( new InputStreamReader(System.in)); try { out = new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())); } catch(IOException e){} public void run(){ try { while(true) { String keyLine = keyin.readLine(); out.write(keyLine + "\r\n"); out.flush(); } catch(IOException e){} } } }
6.3.3 電子メール受信プロトコル [受信プロトコルの種類] ■POP3(Post Office Protocol version 3) ■IMAP4(Internet Mail Access Protocol 4) [POP3の役割] ユーザのログイン名とパスワードを検証して,ユーザメールをサーバから電子メールソフトウェアに転送する [POP3の状態] ①Authorization : TCPコネクション確立後,ユーザ認証を行う。 ②Transaction : メールに関する処理をクライアントがサーバに依頼する。 ③Update : 更新状態を更新し,接続を終了する。
代表的なPOP3コマンド 機 能 コマンド USER ユーザのアカウント名を指定する。 PASS ユーザのパスワードを指定する。 LIST メッセージ番号nまたはすべてのメッセージサイズを表示する。 RETR メッセージ番号nを取り出す。 DELE メッセージ番号nを削除する。 QUIT POP3セクションを終了する。