【第7回】

第3章:インターネットを利用しよう

メール送信のしくみ

(00/06/16)

nakka

 こんにちはnakkaです。今回からインターネットを利用したソフトを作成していきます。ソフトからインターネットを利用するためのプロトコルを覚えると、コミュニケーションソフトや情報収集ソフトなど、アイデア次第でいろいろなソフトを制作することができます。ただし、インターネットに接続するということは世界中のコンピューターに接続することが可能なので、他のコンピューターやネットワークに迷惑をかけないことが大切です。

まずはコンソールで作成

 メールを送るとき、アドレス帳からメールアドレスを選択して送信しますが、登録しているメールアドレスが増えてくると、送信したい相手が見つけにくくなって不便です。自分がよくメールを送信する人をもっと簡単に選択できたら楽になるかもしれないということで、決まった相手に簡単にメールが送信できるメールソフトを作ってみます。

 どうやったら簡単にメールが送信できるかっていうのは、アイデアが問われるところです。デスクトップに送りたい人のアイコンを置いて、そのアイコンにテキストファイルをドラッグ&ドロップするとメールが送信できるというのはどうでしょうか。友人の似顔絵アイコンの上にドラッグ&ドロップすると、その友人にメールが届くんです。操作している姿を考えただけで楽しくなってきませんか。

 メールソフトを作る場合、ユーザーインターフェイスからとりかかるよりも、まずメールを送信する処理をマスターしておくことが肝心です。これができていないと、いくらユーザーインターフェイスや設定が優れていても、まったく役に立ちません。今回はコンソールで動作するメール送信機能のみをもったソフトを作ります。メール送信部が動作しないことには先に進めません。逆にメール送信部がきっちり作れるようになると、次回以降はデザインや好きな機能にたっぷりと時間をかけられるし、別のソフトに応用することも簡単です。

 メールを送信するにはSMTPというメールを送信するためのプロトコルを理解しておく必要があります。SMTPの場合は、主にRFC821というドキュメントに仕様が記載されています。メールソフトを作成する場合、RFC821以外にも文字コードやマルチパートに関するルールをいろいろ勉強しておく必要があります。しかし今回は、メール送信の流れを理解するため、文字コードの変換については割愛して、次回あらためて考えることにします。

 なお、RFCはインターネット環境における技術についての標準化コンソーシアム“IETF”(Internet Engineering Task Force)から数多く発表されています。これからインターネットアプリケーションを開発していこうと考えている人は必見です。

□IETF Home Page
http://www.ietf.org/

SMTPサーバーのテストをする

 まずはSMTPサーバーの動きを理解しておく必要があります。これもRFC821に書いてあるのですが、SMTPサーバーに接続したメールソフトは、SMTPサーバーと対話する形でコマンドやデータを送るようになっています。簡単ですから試しに手動で接続してみましょう。プログラムを使わないでメールサーバーの接続テストをしてみる場合はtelnetできるサーバーに接続して、


    telnet SMTPサーバー名 25

 と入力することでSMTPサーバーに接続できます。接続後は以下のような流れとなります。“S:”の行がサーバーからのメッセージで、“C:”の行がクライアントが入力するコマンドおよびデータです。日本語で書いてある部分を自分の環境にあてはめて、下記のとおりに入力するだけで実際にメールを送信することができます。


    S: 220 ESMTP Sendmail 8.9.3/3.7W; Wed, 31 May 2000 15:16:11 +0900 (JST)
    C: HELO 自分のホスト名
    S: 250 pleased to meet you
    C: MAIL FROM:<自分のメールアドレス>
    S: 250 <自分のメールアドレス>... Sender ok
    C: RCPT TO:<送信先のメールアドレス>
    S: 250 <送信先のメールアドレス>... Recipient ok
    C: DATA
    S: 354 Enter mail, end with "." on a line by itself
    C: 本文
    C: .
    S: 250 PAA14799 Message accepted for delivery
    C: QUIT
    S: 221 closing connection

 上記はとくに簡単な例ですが、SMTPサーバーの応答には「ステータスコード+情報」が付いているのがわかります。これはエラーの状態などを知らせてくれます。クライアントのほうは「コマンド+データ」という感じになっています。コマンドの流れは自分のメールアドレスと送信先のメールアドレスを送ってから本文を送るという単純な流れです。ただしSMTPサーバーを直接操作した場合、文字コードを変換することができませんので、ASCII文字(1バイトの英数字)のみを入力してください。

プログラムに実装

 上記の流れをプログラムで実装したものを作成しました。これはコンソールで動作するきわめて簡単なプログラムです。ちなみに、SMTPサーバーなどのインターネットサーバーと通信を行うにはWinSockというWindowsでソケット通信を行うためのライブラリを使用することになります。ここでのプログラムも手動で接続したときと同様に、文字コードの変換は行っていないのでSubjectや本文にはASCII文字のみを入力するよう注意してください。

コンソールで動作

ダウンロード
(18KB)

 来週は今回作成したプログラムをもとに、GUIを追加してWindows上で使いやすいアプリケーションに改良します。お楽しみに。

nakka

トップページへ
nakkaのオンラインソフトレシピ INDEX


Copyright(C), 1996-2000 Impress Corporation.
編集部への連絡は mado-no-mori-info@impress.co.jp まで