以下、図面を参照して、本発明の実施の形態の一例について説明する。
図1は、本発明のメールシステム100のシステム構成の一例を示す図である。本発明のメールシステム100は、クライアント装置101(クライアント装置101a、クライアント装置101b、クライアント装置101c)、メールサーバ102が設置されており、それら装置はLAN(Local Area Network)等のネットワーク103を介して相互にデータ通信可能に接続されている。図1のネットワーク103上に接続される各種端末あるいはサーバの構成は一例であり、用途や目的に応じて様々な構成例があることは言うまでもない。
クライアント装置101(情報処理装置)は、メールサーバ102と通信し、メーラーを通じて電子メール(以下、メール)の送受信を行う装置である。メーラーは後述する図2のROM202または外部メモリ211に記憶されており、ユーザからの指示に応じて、CPU201がRAM203に読み出して各種動作を行う。
メーラーは、ユーザからの操作に応じて、メールの作成、送受信、表示等を行う。本実施形態では、クライアント装置101a、クライアント装置101b、クライアント装置101cはそれぞれ1人のユーザが使用するクライアント装置101であるので、メーラーに設定されたユーザのアカウント(ユーザID、パスワード等)は同じアカウントが設定されているものとして説明を行う。尚、メールはメールサーバ102の外部メモリ211に記憶されていても、クライアント装置101の外部メモリ211に記憶されていてもよい。本実施形態では、クライアント装置101の外部メモリ211に記憶されているものとして、以下説明を行う。
メールサーバ102は、クライアント装置101から送信されたメールを宛先ごとに記憶管理し、クライアント装置101からの要求に応じてメールを送信する装置である。クライアント装置101との通信では、SMTP(Simple Mail Transfer Protocol)やPOP(Post Office Protocol)といったプロトコルを用いて送受信を行う。通信プロトコルについては、これに限らない。クライアント装置101とメールサーバ102の間でメールの送受信ができればよい。
尚、クライアント装置101が、メールサーバ102の構成を含んでもよいし、メールサーバ102がクライアント装置101の構成を含んでもよい。
図2は、本発明の実施形態における各種端末のハードウェア構成を示す図である。
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
また、ROM202あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステムプログラム(以下、OS)や、各サーバ或いは各PCの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM203は、CPU201の主メモリ、ワークエリア等として機能する。
CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
また、入力コントローラ(入力C)205は、キーボード209や不図示のマウス等のポインティングデバイスからの入力を制御する。
ビデオコントローラ(VC)206は、CRTディスプレイ(CRT)210等の表示器への表示を制御する。表示器はCRTだけでなく、液晶ディスプレイでも構わない。これらは必要に応じて管理者が使用するものである。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、CRT210上での表示を可能としている。また、CPU201は、CRT210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明のクライアント装置101、メールサーバ102が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
次に、クライアント装置101及びメールサーバ102のモジュール構成を示す機能構成図について、図3を用いて説明する。尚、図3の各種端末あるいはサーバのモジュール構成は一例であり、用途や目的に応じて様々な構成例があることは言うまでもない。
クライアント装置101は、記憶モジュール301、画面表示モジュール302、テーブル管理モジュール303、メール送受信モジュール304、メール削除要求モジュール305、第1の設定台数変更モジュール306、第2の設定台数変更モジュール307、変更メール生成モジュール308を備える。
記憶モジュール301(記憶手段)は、メーラーによって作成及び送受信されたメールを記憶するモジュールである。記憶モジュール301によって記憶されたメールは、クライアント装置101の外部メモリ211等に記憶され、必要に応じて、記憶モジュール301によって読みだされる。
画面表示モジュール302は、メールや画面といった各種情報をクライアント装置101のCRT210に表示させるためのモジュールである。特に本実施形態では、図6に示す受信台数変更画面600や、他装置変更メッセージ610、送信完了メッセージ620、図14に示す受信台数変更確認メッセージ1400等を表示し、ユーザからの入力及び操作を受け付ける。
テーブル管理モジュール303は、後述する図7の受信台数テーブル700やユーザ認証テーブル710の記憶や更新等を行うためのモジュールである。各種テーブルは、外部メモリ211に記憶され、必要に応じてRAM203に読み出す。
メール送受信モジュール304は、クライアント装置101で生成されたメールをメールサーバ102に送信したり、メールサーバ102に蓄積されたメールを受信したりするためのモジュールである。メール以外の情報が送信できてもよい。
メール削除要求モジュール305は、メールサーバ102から受信したメールのメールヘッダーに記載された情報と、後述する第1の設定台数変更モジュールで設定された受信台数とを比較して、削除すべきメールの削除要求をメールサーバ102に対して送信するためのモジュールである。
第1の設定台数変更モジュール306は、クライアント装置101のメーラーごとに受信したいクライアント装置101の台数を設定するためのモジュールである。第1の設定台数変更モジュール306は、ユーザからの指示に応じて台数の変更が可能である。
第2の設定台数変更モジュール307は、メール送受信モジュール304で受信したメールに後述する変更メール生成モジュール308で生成された受信台数を変更するためのメールがあった場合に、当該受信台数を変更するためのモジュールである。
変更メール生成モジュール308は、第1の設定台数変更モジュール306で受信台数が変更されると、他のクライアント装置101のメーラーに設定された受信台数を変更するためのメールを生成し、メール送受信モジュール304に送信させるためのモジュールである。
メールサーバ102は、記憶モジュール311、メールボックス管理モジュール312、ユーザ認証モジュール313、メール送受信モジュール314、メール削除モジュール315、メールヘッダー更新モジュール316を備える。
記憶モジュール311は、前述したクライアント装置101の記憶モジュール301と同様である。後述するメール送受信モジュール314によって受信したメールや、メールヘッダー更新モジュール316で更新されたメール等を記憶する(電子メール記憶手段)。
メールボックス管理モジュール312は、記憶モジュール311で記憶されたメールをアカウントごとに記憶管理するためのモジュールである。後述するメール送受信モジュール314によってメールの受信要求を受け付けた場合には、メールの取得を行うアカウントを特定し、そのアカウントのメールボックスからメールを取得して、メール送受信モジュール314に渡す。
ユーザ認証モジュール313は、クライアント装置101から送信されたユーザIDとパスワードに基づいて、メールシステム100の利用者であるか否かを認証するためのモジュールである。
メール送受信モジュール314は、クライアント装置101とメールの送受信を行うためのモジュールである。
メール削除モジュール315は、クライアント装置101のメール削除要求モジュール305からメールの削除要求があった場合に、メールボックス管理モジュール312によって管理されるメールを削除する。
メールヘッダー更新モジュール316は、クライアント装置101からメールの取得要求に応じて、メールを送信する場合に、送信するメールのメールヘッダーを更新するためのモジュールである。メールヘッダーには、クライアント装置101に送信した回数、つまり受信したクライアント装置101の台数を示す情報が含まれており、それらをメール送信の際に追加、またはインクリメントする。
次に、本発明の実施形態におけるクライアント装置101によって行われる一連の処理について、図4に示すフローチャートを用いて説明する。尚、ステップS101乃至ステップS108の各ステップはクライアント装置101におけるCPU201の制御の下、処理が行われる。
また、この処理をクライアント装置101に実行させるためのプログラムは、クライアント装置101にインストールされているメーラーの一部、若しくはアドオンプログラムとして用意されていてもよいし、メーラーとは別にインストールされたプログラムとして用意されていてもよい。
まず、ステップS101では、クライアント装置101は、クライアント装置101の外部メモリ211に記憶されたメーラーのプログラムを起動する。そして、ステップS102では、クライアント装置101は、メーラーに対してユーザからの操作を受け付ける。
ステップS103では、クライアント装置101は、ステップS102で受け付けた操作が受信台数変更指示であるか否かを判定する。例えば、メーラーのメニューから受信台数変更ボタン(不図示)が押下されたか否かを判定すればよい。受信台数変更指示であった場合には、ステップS104に処理を進め、そうでない場合には、ステップS105に処理を進める。
ステップS104では、クライアント装置101は、ユーザが同一のメールを受信したいクライアント装置の台数を変更する処理を実行する。受信台数変更処理の詳細は、後述する図5に示す。処理が終了したら、ステップS102に処理を戻す。
ステップS105では、クライアント装置101は、ステップS102で受け付けた操作がメールの受信指示であるか否かを判定する。例えば、メーラーのメニューからメール受信ボタン(不図示)が押下されたか否かを判定すればよい。メール受信指示であった場合には、ステップS106に処理を進め、そうでない場合には、ステップS107に処理を進める。
ステップS106では、クライアント装置101は、メールサーバ102に蓄積されたメールを受信する処理を実行する。メール受信処理の詳細は、後述する図9乃至図11に示す。処理が終了したら、ステップS102に処理を戻す。
ステップS107では、クライアント装置101は、ステップS102で受け付けた操作がメーラーの終了指示であるか否かを判定する。例えば、メーラーのメニューから終了ボタン(不図示)が押下されたか否かを判定すればよい。終了指示であった場合には、ステップS108に処理を進め、そうでない場合には、ステップS102に処理を戻す。
ステップS108では、クライアント装置101は、メーラーの終了指示を受け付けたのでメーラーを終了し、本一連の処理を終了する。
次に、本発明の実施形態におけるクライアント装置101とメールサーバ102によって行われる受信台数変更処理について図5を用いて説明する。尚、ステップS201乃至ステップS208、ステップS212乃至ステップS215、ステップS219、ステップS220の各ステップはクライアント装置101におけるCPU201の制御の下、処理が行われる。また、ステップS209乃至ステップS211、ステップS216乃至ステップS218の各ステップはメールサーバ102におけるCPU201の制御の下、処理が行われる。
また、この処理をクライアント装置101及びメールサーバ102に実行させるためのプログラムは、クライアント装置101及びメールサーバ102にインストールされているメーラーまたはアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、メーラーまたはアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
受信台数変更処理は、ユーザが受信したいクライアント装置101の台数を設定するための処理である。後述するメール受信処理ですべてのクライアント装置101で受信がなされたか否かを判定する際に、受信台数変更処理で設定された受信台数を使用する。
まず、ステップS201では、クライアント装置101は、図6に示すような受信台数変更画面600をクライアント装置101のCRT210に表示させる。受信台数変更画面600は、ユーザID入力欄601、パスワード入力欄602、受信台数入力欄603、OKボタン604から構成される。ユーザID入力欄601とパスワード入力欄602には、ユーザごとに設定されたユーザIDとパスワードの入力を受け付ける入力フォームである。受信台数入力欄603は、ユーザが同一のメールを受信したいクライアント装置101の台数の入力を受け付ける入力フォームである。
ステップS202では、クライアント装置101は、ユーザID入力欄601、パスワード入力欄602、受信台数入力欄603にそれぞれ入力され、OKボタン604が押下されたか否かを判定する。OKボタン604が押下されたと判定された場合には、ステップS203に処理を進め、そうでない場合にはそのまま待機する。
ステップS203では、クライアント装置101は、クライアント装置101の外部メモリ211に記憶された図7に示す受信台数テーブル700の受信台数701を、受信台数入力欄603に入力された値に変更する(第1の設定台数変更手段)。
受信台数テーブル700(図7参照)は、受信台数701から構成される。受信台数701(設定台数情報)は、同一のメールを受信したいクライアント装置101の台数を示す情報である。
図7に示す受信台数701には「2」が格納されているが、図6に示すように受信台数入力欄603に「3」と入力されている場合には、受信台数701を「3」に変更する。こうすることで、ユーザが同一のメールを受信したいクライアント装置101の台数を変更することができる。これをすべてのクライアント装置101で行ってもよいし、後述するステップS204乃至ステップS220、図10のステップS325乃至ステップS329の処理によって変更させてもよい。
ステップS204では、クライアント装置101は、図6に示すような他装置変更メッセージ610をクライアント装置101のCRT210に表示させる。つまり、受信台数701を変更したということは、他のクライアント装置101においても変更する必要がある。例えば、ユーザがクライアント装置101aとクライアント装置101bの2台を使用していたところに、クライアント装置101cを追加した場合には、各クライアント装置101で受信台数の設定変更が必要となる。この設定変更は、台数が多ければ多いほどユーザにとって手間となってしまうので、受信台数701を自動的に変更できるメールを自分宛てに送信することで、設定を簡単にする。受信台数変更処理では、このメールを送信する処理について説明を行い、後述するメール受信処理でこのメールを受信した場合の処理について説明を行う。
ステップS205では、クライアント装置101は、他のクライアント装置101も変更する指示がなされたか否かを判定する。つまり、他装置変更メッセージ610のはいボタン611が押下されたか否かを判定する。はいボタン611が押下されたと判定された場合には、ステップS206に処理を進め、そうでない場合には、受信台数変更処理を終了し、呼び出し元に処理を戻す。
ステップS206では、クライアント装置101は、クライアント装置101のメーラーによってメールヘッダーに変更された受信台数を通知するための項目を追加したメールを生成する。具体的には、図8の受信台数変更メールヘッダー800のメールヘッダー情報801に示すように、メールヘッダーに「Change−Receiving−Count」という項目を追加したメールを生成する。尚、本実施形態ではメールヘッダーにこのような情報を含める仕組みとして説明を行うが、メールとは別の情報でもよいし、メールの添付ファイルとして生成されてもよい。また、メールヘッダーには「Receiving−Count」という項目も追加する。この「Receiving−Count」(受信済み台数情報)は、メールサーバ102がメールを送信した回数、つまりクライアント装置101でメールを受信した回数を示す項目である。この項目の値と、前述したステップS203で設定された受信台数701に基づいて、メールサーバ102に対してクライアント装置101が削除要求を送信するか否か決定する。尚、「Change−Receiving−Count」と同様に、本実施形態ではメールヘッダーにこのような情報を含める仕組みとして説明を行うが、メールとは別の情報やファイルでもよいし、メールの添付ファイルとして生成されてもよい。また、すでにステップS203で設定変更されたクライアント装置101は再度生成したメールを受信する必要はないので、図8のメールヘッダー情報802に示すように「Receiving−Count」を「1」と設定しておく。そして、自分宛てに送信するため、メールヘッダー情報803に示すように、宛先を示す「To」には自分のアドレスを設定する。自分のアドレスは、メーラーにあらかじめ設定されているアカウントから取得してもよいし、ユーザID入力欄601に入力されたメールアドレスを使用してもよい。
ステップS207では、クライアント装置101は、ステップS206で生成された「Change−Receiving−Count」にステップS203で変更された受信台数701を設定する。受信台数701が「2」から「3」に変更されたのであれば、図8のメールヘッダー情報801に示すように「Change−Receiving−Count」に「3」を設定する。
ステップS208では、クライアント装置101は、ステップS206及びステップS207で生成、設定されたメールを送信するために、ユーザID入力欄601及びパスワード入力欄602に入力されたユーザIDとパスワードをメールサーバ102に送信する。つまり、メール送信のためのユーザ認証を行う。
ステップS209では、メールサーバ102は、クライアント装置101から送信されたユーザIDとパスワードを受信する。そして、ステップS210では、メールサーバ102は、受信したユーザIDとパスワードと、メールサーバ102の外部メモリ211に記憶されたユーザ認証テーブル710に基づいてユーザ認証を行う。受信したユーザIDとパスワードの組み合わせがユーザ認証テーブル710のユーザID711とパスワード712の組み合わせに存在すれば、認証OKとなるが、そうでなければ認証NGとなる。
ユーザ認証テーブル710(図7参照)は、ユーザID711とパスワード712から構成される。ユーザID711は、ユーザごとに識別可能な情報である。本実施形態においては、ユーザのメールアドレスをユーザIDとして格納する。パスワード712は、ユーザ認証に必要なパスワードである。ユーザID711とパスワード712はあらかじめ管理者やユーザから登録されているものとする。
ステップS211では、メールサーバ102は、ステップS210で認証された結果をクライアント装置101に返信する。
ステップS212では、クライアント装置101は、メールサーバ102から送信されたユーザ認証の結果を受信する。そして、ステップS213では、クライアント装置101は、その受信結果が認証OKであったか否かを判定する。認証OKであった場合には、ステップS215に処理を進め、認証NGであった場合には、ステップS214に処理を進める。
ステップS214では、クライアント装置101は、認証NGであったため接続エラーをユーザに通知して、受信台数変更処理を終了し、呼び出し元に処理を戻す。
ステップS215では、クライアント装置101は、ステップS206及びステップS207で生成、設定されたメールをメールサーバ102に送信する(変更メール送信手段)。
ステップS216では、メールサーバ102は、クライアント装置101から送信されたメールを受信し、ステップS217では、受信したメールの宛先に対応するメールボックスにメールを格納する。つまり、当該ユーザのメールボックスに格納されることになる。ステップS218では、メールサーバ102は、メールの格納が完了した結果をクライアント装置101に送信する。
ステップS219では、クライアント装置101は、メールの格納結果を受信し、ステップS220では、図6に示すような送信完了メッセージ620をクライアント装置101のCRT210に表示させ、受信台数変更処理を終了し、呼び出し元に処理を戻す。
以上のようにすることで、クライアント装置101の受信台数を変更し、更に変更に応じて他のクライアント装置101の受信台数を変更可能なメールを自分宛てに送信することができる。
次に、本発明の実施形態におけるクライアント装置101とメールサーバ102によって行われるメール受信処理について図9乃至図11を用いて説明する。尚、ステップS301、ステップS305乃至ステップS308、ステップS312乃至ステップS317、ステップS324乃至ステップS331、ステップS335、ステップS336の各ステップはクライアント装置101におけるCPU201の制御の下、処理が行われる。また、ステップS302乃至ステップS304、ステップS309乃至ステップS311、ステップS318乃至ステップS323、ステップS332乃至ステップS334の各ステップはメールサーバ102におけるCPU201の制御の下、処理が行われる。
また、この処理をクライアント装置101及びメールサーバ102に実行させるためのプログラムは、クライアント装置101及びメールサーバ102にインストールされているメーラーまたはアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、メーラーまたはアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
メール受信処理は、クライアント装置101がメールサーバ102に蓄積されたメールを受信し、前述した受信台数変更処理で設定された受信台数分受信されている場合に、メールサーバ102に対して削除要求を送信するための処理である。
まず、図15を参照してメール受信処理の処理概要について説明を行う。まず、前述した受信台数変更処理でクライアント装置101のメーラーによって受信台数701が設定される。そして、ユーザからの指示に応じて、クライアント装置101がメールサーバ102に対してメールの受信要求を送信する。メールサーバは、メールの受信要求を受信すると、メールボックスに蓄積されたメールのメールヘッダーにある「Receiving−Count」の値をインクリメントする。ここで、メールヘッダーに「Receiving−Count」がない場合には、新しく追加する。「Receiving−Count」は前述の通り、当該メールがクライアント装置101に受信された回数を示す情報である。
「Receiving−Count」の更新が完了したら、メールの受信要求が来たクライアント装置101に対して当該メールを送信する。クライアント装置101は、メールの受信が完了すると、受信したメールのメールヘッダーに付された「Receiving−Count」の値と、クライアント装置101のメーラーに設定された受信台数701とを比較し、「Receiving−Count」の値が受信台数701以上であったら、当該メールの削除要求をメールサーバ102に対して送信する。そうでないメールについては、削除要求を送信しない。メールサーバ102では、「Receiving−Count」の値が受信台数701以上となったメールの削除要求を受信し、当該メールをメールボックスから削除する。こうすることで、設定された受信台数分の受信が完了したら、クライアント装置101からメールサーバ102に対して当該メールの削除要求を送信することができるので、ユーザは受信台数をクライアント装置101に設定するだけで、メールサーバの容量を圧迫せずに、必要な台数分メールを受信することができる。以下、この詳細な説明を行う。
まず、ステップS301では、クライアント装置101は、ユーザ認証を行うべく、メーラーにあらかじめ設定されたユーザIDとパスワードをメールサーバ102に送信する。
ステップS302では、メールサーバ102は、クライアント装置101から送信されたユーザIDとパスワードを受信し、ステップS303では、受信したユーザIDとパスワードと、メールサーバ102の外部メモリ211に記憶されたユーザ認証テーブル710に基づいてユーザ認証を行う。受信したユーザIDとパスワードの組み合わせがユーザ認証テーブル710のユーザID711とパスワード712の組み合わせに存在すれば、認証OKとなるが、そうでなければ認証NGとなる。
ステップS304では、メールサーバ102は、ステップS303で認証された結果をクライアント装置101に返信する。
ステップS305では、クライアント装置101は、メールサーバ102から送信されたユーザ認証の結果を受信する。そして、ステップS306では、クライアント装置101は、その受信結果が認証OKであったか否かを判定する。認証OKであった場合には、ステップS308に処理を進め、認証NGであった場合には、ステップS307に処理を進める。
ステップS307では、クライアント装置101は、認証NGであったため接続エラーをユーザに通知して、メール受信処理を終了し、呼び出し元に処理を戻す。
ステップS308では、クライアント装置101は、メールサーバ102のメールボックスに蓄積されたすべてのメールのメールヘッダーの取得をメールサーバ102に対して要求する。後述するステップS313及びステップS314で、既に受信済みのメールと新たに受信すべきメールを特定するためにこのような処理を行っている。
ステップS309では、メールサーバ102は、クライアント装置101から送信されたすべてのメールのメールヘッダー取得要求を受信する。そして、ステップS310では、メールサーバ102は、ステップS303で認証されたユーザのメールボックスに蓄積されたすべてのメールからメールヘッダーを取得する。ここでは少なくともメールを一意に特定する識別情報である「Message−id」を含めて取得するようにする。他にもメールを一意に特定できるような情報があれば、それで代用しても構わない。
ステップS311では、メールサーバ102は、ステップS310で取得したすべてのメールのメールヘッダーをクライアント装置101に送信する。
ステップS312では、クライアント装置101は、メールサーバ102から送信されたメールヘッダーを受信し、ステップS313では、クライアント装置101は、受信したメールヘッダーとクライアント装置101に受信済みのメールのメールヘッダーとを比較し、新たに受信すべきメールの有無を確認する。具体的には、受信したメールヘッダーに含まれる「Message−id」を持つメールをクライアント装置101のメーラーから検索するようにすればよい。受信したメールヘッダーに含まれる「Message−id」を持つメールがクライアント装置101にあれば、既にそのメールは受信済みであると判定できる。しかし、受信したメールヘッダーに含まれる「Message−id」を持つメールがクライアント装置101にないのであれば、当該「Message−id」を持つメールは、新たにメールサーバ102から受信すべきメールであると判定できる。
ステップS314では、クライアント装置101は、ステップS313で確認した結果、新たに受信すべきメールが存在するか否かを判定する。新たに受信すべきメールが存在すると判定された場合には、図10のステップS316に処理を進め、新たに受信すべきメールが存在しないと判定された場合には、ステップS315に処理を進める。
ステップS315では、クライアント装置101は、新たに受信すべきメールが存在しないので、その旨をユーザに通知する。そして、メール受信処理を終了し、呼び出し元に処理を戻す。
図9に続き、図10を用いて説明を行う。ステップS316では、クライアント装置101は、後述するステップS317乃至ステップS329、図11のステップS330乃至ステップS335の処理を受信するメール数分繰り返す。受信するメール数分のループが完了したら、ループを抜けて、図11のステップS336に処理を進める。
ステップS317では、クライアント装置101は、新たに受信すべきメールの受信要求をメールサーバ102に対して送信する(取得要求送信手段)。ここでは、新たに受信すべきメールのうち、1通のメールについての受信要求を送信する。メールの受信順序は問わない。
ステップS318では、メールサーバ102は、クライアント装置101から送信されたメールの受信要求を受信する。そして、ステップS319では、メールサーバ102は、クライアント装置101から要求されたメールを当該ユーザのメールボックスから取得する。
ステップS320では、メールサーバ102は、ステップS319で取得したメールのメールヘッダーに「Receiving−Count」が存在するか否かを判定する。「Receiving−Count」が存在する場合には、ステップS322に処理を進め、「Receiving−Count」が存在しない場合には、ステップS321に処理を進める。
ステップS321では、メールサーバ102は、ステップS319で受信したメールのメールヘッダーに「Receiving−Count」が存在しないので、新たにメールヘッダーに「Receiving−Count」を追加し、値を「1」に設定する(更新手段、カウントアップ)。図12の受信メールヘッダー1200に示すように、元々はメールヘッダーに「Receiving−Count」が存在しないメールについては、メールヘッダー情報1201に示すように「Receiving−Count」を新たに追加し、値に「1」を設定する。ここで「Receiving−Count」の値を「1」に設定するのは、これからクライアント装置101にメールを送信することで、1台の装置で受信がなされるからである。
ステップS322では、メールサーバ102は、ステップS319で取得したメールのメールヘッダーに含まれる「Receiving−Count」の値をインクリメントする(更新手段)。図13の受信メールヘッダー1300のメールヘッダー情報1301に示すように、ステップS319で取得したメールのメールヘッダーには既に「Receiving−Count」として値に「1」が設定されている。つまり、既に1台のクライアント装置101に当該メールを送信していることを示している。今回新たにメールを送信するため、この「Receiving−Count」の値に更に「1」を加算して、メールヘッダー情報1302に示すように値を「2」に変更する。このようにすることで、何台のクライアント装置101に送信したのかを記録しておくことができる。尚、前述した通り、本実施形態ではメールヘッダーにこのような情報を含める仕組みとして説明を行うが、メールとは別の情報でもよいし、メールの添付ファイルとして生成されてもよい。
ステップS323では、メールサーバ102は、ステップS319で取得し、ステップS321またはステップS322で「Receiving−Count」の追加または更新を行ったメールをクライアント装置101に送信する(送信手段)。
ステップS324では、クライアント装置101は、メールサーバ102から送信されたメールを受信する(受信手段)。
ステップS325乃至ステップS329は、前述した受信台数変更処理で送信した受信台数変更のためのメールに応じた処理を実行するステップである。図16を参照してこの処理概要について説明を行う。前述した受信台数変更処理でクライアント装置101の受信台数701を変更すると、自分宛てにメールを生成し、当該メールのメールヘッダーに「Change−Receiving−Count」を追加し、変更した受信台数を「Change−Receiving−Count」の値として設定し、メールサーバ102に送信する。そして、他のクライアント装置101で、自分宛てに送信した「Change−Receiving−Count」付きメールを受信すると、当該クライアント装置101のメーラーに設定された受信台数701と、受信したメールの「Change−Receiving−Count」の値を比較して、一致しなければ、受信台数701を「Change−Receiving−Count」の値に更新する。図16に示すように、クライアント装置101aで受信台数701を「3」に変更した場合には、「Change−Receiving−Count」の値に「3」を設定したメールを自分宛てに送信する。そして、受信台数701が「2」のクライアント装置101bで送信したメールを受信すると、クライアント装置101bの受信台数701を「Change−Receiving−Count」の値である「3」に変更する。こうすることで、1台のクライアント装置101を変更するだけで、他のクライアント装置101の受信台数701も自動的に変更することが可能となる。以下、この処理についてステップS325乃至ステップS329で詳細な説明を行う。
ステップS325では、クライアント装置101は、ステップS324で受信したメールのメールヘッダーに「Change−Receiving−Count」が存在するか否かを判定する。つまり、前述した受信台数変更処理で自分宛てに送信した受信台数変更のためのメールであるかどうかを判定することになる。「Change−Receiving−Count」が存在する場合には、ステップS326に処理を進め、「Change−Receiving−Count」が存在しない場合には、図11のステップS330に処理を進める。
ステップS326では、クライアント装置101は、クライアント装置101のメーラーに設定された受信台数701と、ステップS324で受信したメールの「Change−Receiving−Count」の値が一致するか否かを判定する。一致すると判定された場合には、図11のステップS330に処理を進め、一致しないと判定された場合には、ステップS327に処理を進める。
ステップS327では、クライアント装置101は、図14に示すような受信台数変更確認メッセージ1400をクライアント装置101のCRT210に表示させる。自動的にクライアント装置101の受信台数701を変更してしまってもよいが、ここではユーザに対して変更するか否かの選択を受け付けるようにする。
ステップS328では、クライアント装置101は、受信台数の変更指示をユーザから受け付けたかどうかを判定する。具体的には、受信台数変更確認メッセージ1400に備えられたはいボタン1401が押下されたか否かを判定する。はいボタン1401が押下されたと判定された場合には、ステップS329に処理を進め、そうでない場合には、図11のステップS330に処理を進める。
ステップS329では、クライアント装置101は、クライアント装置101の受信台数701を、ステップS324で受信したメールの「Change−Receiving−Count」の値に変更する(第2の設定台数変更手段)。クライアント装置101の受信台数701が「2」で、「Change−Receiving−Count」の値が「3」であれば、受信台数701を「3」に変更する。こうすることで、自分宛てに送信された受信台数変更のメールに基づき、クライアント装置101の受信台数701を変更することができる。
図10に続き、図11を用いて説明を行う。ステップS330では、クライアント装置101は、前述したステップS324で受信したメールのメールヘッダーに含まれる「Receiving−Count」の値が、クライアント装置101のメーラーに設定された受信台数701以上であるか否かを判定する。つまり、設定された受信台数分受信されたかどうかを判定することになる。ここで設定された受信台数分受信されていれば、当該メールの削除要求を後述するステップS331で送信するが、そうでなければ削除要求を発行せずに次のメールの処理に移る。このような仕組みでメールサーバ102のメールボックスに蓄積されたメールを削除するようにすれば、ユーザは受信台数を各クライアント装置101に設定するだけで、サーバの容量を圧迫することなく、複数台のクライアント装置101で同一のメールを受信することができるようになる。「Receiving−Count」の値が受信台数701以上であると判定された場合には、ステップS331に処理を進め、「Receiving−Count」の値が受信台数701以上でないと判定された場合には、ステップS316に処理を戻す。尚、ステップS331に処理を進め、「Receiving−Count」の値が受信台数701以上でないと判定された場合で、すべての受信メールに対して処理が完了している場合には、ステップS336に処理を進める。
ステップS331では、クライアント装置101は、設定された受信台数分受信が完了したので、当該メールの削除要求をメールサーバ102に送信する(削除要求送信手段)。削除要求を送信する際には、当該メールを特定できる情報と共に送信する。例えば、当該メールのメールヘッダーに含まれる「Message−id」と、ユーザを特定するユーザID及びパスワードである。
ステップS332では、メールサーバ102は、クライアント装置101から送信されたメールの削除要求を受信する。そして、ステップS333では、メールサーバ102は、受信したメールの削除要求に基づいて、該当するメールをメールボックスから削除する(削除手段)。削除するメールは、クライアント装置101から送信された「Message−id」やユーザID等から特定する。削除が完了したら、ステップS334では、メールサーバ102は、削除結果をクライアント装置101に送信する。
ステップS335では、クライアント装置101は、メールサーバ102から送信された削除結果を受信し、処理をステップS316に戻す。尚、すべての受信メールに対して処理が完了している場合には、ステップS336に処理を進める。
ステップS336では、クライアント装置101は、前述したステップS324で受信したメール一覧をユーザに対して閲覧可能にCRT210に表示させる。表示が完了したら、メール受信処理を終了し、呼び出し元に処理を戻す。
次に、本発明の第2の実施形態について説明を行う。
前述した実施形態では、同一のメールを複数受信したとしても、1通ずつ処理を行うことになる。例えば、個人アドレスと同様のアドレスを含むメーリングリストに対して送信すると、「Message−id」が重複した同じ内容の2通のメールがメーラーに受信される。1台のクライアント装置101のみで受信する場合は、重複したメールは受信後にメールサーバから削除される。しかし、複数端末から受信する場合は、全端末から受信が完了するまで、重複メールが削除されないため不要な重複メールが長期間メールサーバに残ってしまう。
第2の実施形態では、この問題点を解決するために、前述したステップS330における「Receiving−Count」の判定で未受信のクライアント装置101があると判定されたメールについて、重複メールか否かを判定し、重複メールであると判定された場合には、メールサーバ102に対して削除要求を送信する。つまり、メールが未受信のクライアント装置101があったとしても、重複メールなら削除要求を送信する仕組みである。
第2の実施形態の処理概要について、図18を用いて説明する。図18は、第2の実施形態の処理概要を示す概要図である。まず、前述した実施形態と同様に、クライアント装置101がメールサーバ102からメールを受信する。その結果、「Receiving−Count」が所定値未満だった場合には、まだ未受信のクライアント装置101が存在するので、メールサーバ102には削除要求を送信しない。そして、第2の実施形態では、ここであとから送信されてくるメールが重複メールかどうかを判定するために、受信したメールをRAM203等の一時領域に保存しておく。これらの処理が終了したら、クライアント装置101は残りのメールの取得をメールサーバ102に要求する。そして、メールサーバ102から送信されたメールを受信する。クライアント装置101は、メールを受信し、未受信のクライアント装置101が存在するメールであると判定された場合には、そのメールが一時領域に記憶されたメールと重複するメールか否かを判定する。重複するメールとは、「Message−id」、「From」、「Subject」といったメールヘッダーが同じメールである。メールの宛先には、「To」、「Cc」、「Bcc」の3つが存在し、このうち2種類以上に同じ宛先が指定されると、2通メールを受信することになってしまう。これを重複メールと示す。重複メールであると判定された場合には、未受信のクライアント装置101に受信させたり、メールサーバ102に残しておいたりしたくないので、当該メールの削除要求をメールサーバ102に送信する。このようにすることで、未受信のクライアント装置101で重複メールを受信することがなくなる上、メールサーバ102の容量を作成することができるようになる。
次に、第2の実施形態における一連の処理の流れについて説明を行う。尚、第2の実施形態のシステム構成、ハードウェア構成、モジュール構成は、前述した実施形態と同様であるので、説明を省略する。また、第2の実施形態は、前述した実施形態で説明を行ったメール受信処理に関する別の実施形態である。そのため、図10、図11の各ステップにおける処理は、第2の実施形態においても同様であるので、図12のステップS330に相当するステップから説明を行う。その他、画面やデータ、用語の定義についても、前述した実施形態と同様である。
本発明の第2の実施形態におけるクライアント装置101とメールサーバ102によって行われるメール受信処理について、図17に示すフローチャートを用いて説明する。尚、ステップS401、ステップS402、ステップS406乃至ステップS408、ステップS414、ステップS415の各ステップはクライアント装置101におけるCPU201の制御の下、処理が行われる。また、ステップS403乃至ステップS405、ステップS409乃至ステップS411の各ステップはメールサーバ102におけるCPU201の制御の下、処理が行われる。
また、この処理をクライアント装置101及びメールサーバ102に実行させるためのプログラムは、クライアント装置101及びメールサーバ102にインストールされているメーラーまたはアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、メーラーまたはアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
また、図17のステップS401は、前述した図10のステップS325、またはステップS326、またはステップS328、またはステップS329から所定の判定または処理が終了した後に、実行が開始されるステップである。
ステップS401では、クライアント装置101は、前述したステップS324で受信したメールのメールヘッダーに含まれる「Receiving−Count」の値が、クライアント装置101のメーラーに設定された受信台数701以上であるか否かを判定する。つまり、設定された受信台数分受信されたかどうかを判定することになる。ここで設定された受信台数分受信されていれば、当該メールの削除要求を後述するステップS402で送信するが、そうでなければ削除要求を発行せずに次のメールの処理に移る。「Receiving−Count」の値が受信台数701以上であると判定された場合には、ステップS402に処理を進め、「Receiving−Count」の値が受信台数701以上でないと判定された場合には、ステップS407に処理を進める。
ステップS402では、クライアント装置101は、設定された受信台数分受信が完了したので、当該メールの削除要求をメールサーバ102に送信する(削除要求送信手段)。削除要求を送信する際には、当該メールを特定できる情報と共に送信する。例えば、当該メールのメールヘッダーに含まれる「Message−id」と、ユーザを特定するユーザID及びパスワードである。
ステップS403では、メールサーバ102は、クライアント装置101から送信されたメールの削除要求を受信する。そして、ステップS404では、メールサーバ102は、受信したメールの削除要求に基づいて、該当するメールをメールボックスから削除する(削除手段)。削除するメールは、クライアント装置101から送信された「Message−id」やユーザID等から特定する。削除が完了したら、ステップS405では、メールサーバ102は、削除結果をクライアント装置101に送信する。
ステップS406では、クライアント装置101は、メールサーバ102から送信された削除結果を受信し、処理をステップS316に戻す。尚、すべての受信メールに対して処理が完了している場合には、ステップS414に処理を進める。
ステップS407では、クライアント装置101は、未受信のクライアント装置101があると判定されたメールが、クライアント装置101のRAM203等に一時記憶されたメールと重複するメールであるか否かを判定する(重複メール判定手段)。クライアント装置101のRAM203等には、後述するステップS413で記憶された重複メール判定用のメールが保存されている。このメールは、未受信のクライアント装置101が存在するメールであり、かつ重複メールでないと判定されたメールである。本実施形態では1通ずつ受信し、ステップS413までの処理を行っていくため、重複メールがある場合には、後から送信されてくることになる。よって、受信したメールを一時的に記憶しておき、後から受信されたメールを比較することで、重複メールかどうかを判定している。重複するか否かは、メールのメールヘッダーを比較するようにすればよい。基本的には「Message−id」同士を比較すればよい。しかし、「Message−id」はランダムに生成された識別情報なので、異なる内容のメールだが同じ「Message−id」となってしまう可能性がある。よって、「Message−id」以外の「From」や「Subject」といったメールヘッダーを併用してもよい。重複メールかどうかの判定方法はこれに限らない。重複メールであると判定された場合には、ステップS408に処理を進め、そうでない場合には、ステップS413に処理を進める。
ステップS408では、クライアント装置101は、重複メールであると判定されたので、当該メールの削除要求をメールサーバ102に送信する。削除要求を送信する際には、当該メールを特定できる情報と共に送信する。例えば、当該メールのメールヘッダーに含まれる「Message−id」と、ユーザを特定するユーザID及びパスワードである。
ステップS409では、メールサーバ102は、クライアント装置101から送信されたメールの削除要求を受信する。そして、ステップS410では、メールサーバ102は、受信したメールの削除要求に基づいて、該当するメールをメールボックスから削除する。削除するメールは、クライアント装置101から送信された「Message−id」やユーザID等から特定する。削除が完了したら、ステップS411では、メールサーバ102は、削除結果をクライアント装置101に送信する。
ステップS412では、クライアント装置101は、メールサーバ102から送信された削除結果を受信し、処理をステップS316に戻す。尚、すべての受信メールに対して処理が完了している場合には、ステップS414に処理を進める。
ステップS413では、クライアント装置101は、ステップS407で重複メールではないと判定されたので、当該メールをクライアント装置101に備えられたRAM203等の一時記憶領域に保存する。保存されたメールは、前述したステップS407で重複メールであるか否かの判定を行うために利用される。尚、本実施形態では、メール自体を保存するようにしているが、当該メールからステップS407における判定で必要なメールヘッダーのみを抽出して保存する形態でもよい。
ステップS414では、クライアント装置101は、メールサーバ102に保存されたメールをすべて受信したので、重複メールを判定するために保存していたメールをすべて削除する。つまり、ステップS413でクライアント装置101のRAM203等に記憶したメールをすべて削除するということである。
ステップS415では、クライアント装置101は、前述したステップS324で受信したメール一覧をユーザに対して閲覧可能にCRT210に表示させる。表示が完了したら、メール受信処理を終了し、呼び出し元に処理を戻す。
以上説明したように、本実施形態によれば、メールを受信するクライアント装置ごとに受信台数を設定しておくだけで、当該受信台数に達したメールの削除要求をメールサーバに送信することが可能となるので、ユーザの手間を軽減しつつ、メールサーバの容量を圧迫しないように複数台のクライアント装置でメールを受信することのできる効果を奏する。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。