(57)【要約】      （修正有）【課題】マルチパートメッセージの受信時に、バウンダリ文字列の検出を単純化することで高速に受信処理を行える通信装置を提供する。【解決手段】マルチパートのメッセージを送受信する通信装置において、受信されたマルチパートのパートに、そのパートのコンテンツ長を示す情報が含まれているか否かを判定する。判定の結果、受信されたマルチパートのパートに、そのパートのコンテンツ長を示す情報が含まれている場合、そのコンテンツ長に基づいて、そのパートのメッセージを処理する。【選択図】図６
2010267145.tif 000002
【特許請求の範囲】
【請求項１】
マルチパートのメッセージを送受信する通信装置であって、
前記マルチパートのメッセージを受信する受信手段と、
前記受信されたマルチパートのパートに該パートのコンテンツ長を示す情報が含まれているか否かを判定する判定手段と、
前記判定の結果、前記パートに該パートのコンテンツ長を示す情報が含まれている場合、該コンテンツ長に基づいて当該パートのメッセージを処理する処理手段と、
を有することを特徴とする通信装置。
【請求項２】
前記マルチパートのメッセージを保存する保存手段を更に有し、
前記処理手段は、前記コンテンツ長から前記メッセージを保存する領域を前記保存手段に確保できるか否かを判定し、当該領域が確保できない場合、エラーメッセージを送信側に通知することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記パートのコンテンツ長を示す情報は拡張ヘッダとして当該パートに含まれることを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記パートのコンテンツ長は、パートに添付される添付ファイルのデータサイズであることを特徴とする請求項１乃至３の何れか１項に記載の通信装置。
【請求項５】
マルチパートのメッセージを送受信する通信装置の制御方法であって、
受信手段が、前記マルチパートのメッセージを受信する受信工程と、
判定手段が、前記受信されたマルチパートのパートに該パートのコンテンツ長を示す情報が含まれているか否かを判定する判定工程と、
処理手段が、前記判定の結果、前記パートに該パートのコンテンツ長を示す情報が含まれている場合、該コンテンツ長に基づいて当該パートのメッセージを処理する処理工程と、
を有することを特徴とする通信装置の制御方法。
【請求項６】
コンピュータを請求項１乃至４の何れか１項に記載の通信装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチパートのメッセージを送受信する通信装置及びその制御方法に関する。
【背景技術】
【０００２】
従来、電子メールやSOAPメッセージの送受信時に、メッセージ本体と一緒にファイルを添付して送受信することが一般的に行われている。ファイルを添付する形式としてはMIME/Multipart形式が一般的に広く使われている。そして、メッセージ本文と添付ファイルをバウンダリ文字列で区切ることで複数のパートを一つのメッセージの形にパッケージングしている。これにより、マルチパートメッセージとして複数の形式のメッセージを一度に送受信することが可能である。MIME/Multipart形式は、SOAPメッセージでの複数パートのパッケージング形式として標準化され、相互運用性も確保されている仕様のMTOMにも採用され利用されている。ここで、MTOMはMessage Transmission Optimization Mechanismの略である。
【０００３】
特許文献１には、送信する電子メールのメールヘッダに、受信側における電子メールの本文の取扱いを指示する情報を含ませるインターネットファクシミリ装置が記載されている。引用文献１では、受信した電子メールのメールヘッダに含まれる情報に基づいて、電子メールの本文を取扱う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１４２０６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、MIME/Multipart仕様では、マルチパートメッセージのパートとパートの間にパートの区切りを表すバウンダリ文字列を挟むことで複数のパートのパッケージングを実現している。そのため、パートの区切りを検出するためにバウンダリ文字列検索処理を行っている。この処理は、マルチパートメッセージを始めから順番に読み込んでいき、読み込んだデータと区切り文字であるバウンダリ文字列とを比較し、読み込んだデータがバウンダリ文字列と合致した時点でパートの区切りだと判断する処理である。即ち、この処理は、マルチパートの一つのパートに大容量のデータが添付されている場合には、受信側の処理に大きな負荷がかかる。処理能力が高くない機器では、受信側での処理が極端に遅くなり、メッセージ送受信処理全体の障害となってしまうという問題があった。
【０００６】
また、特許文献１でも、受信側の負荷を軽減することはできない。
【０００７】
本発明は、マルチパートメッセージの受信時に、バウンダリ文字列の検出を単純化することで高速に受信処理を行える通信装置を提供する。また、受信先で受け取れないサイズのデータが送られてくる場合に、そのデータを受信する前にエラーを送信元に返すことでデータがサイズ超過で受け取れないエラー発生時の処理時間を短縮できる通信装置を提供する。
【課題を解決するための手段】
【０００８】
本発明は、マルチパートのメッセージを送受信する通信装置であって、
前記マルチパートのメッセージを受信する受信手段と、
前記受信されたマルチパートのパートに該パートのコンテンツ長を示す情報が含まれているか否かを判定する判定手段と、
前記判定の結果、前記パートに該パートのコンテンツ長を示す情報が含まれている場合、該コンテンツ長に基づいて当該パートのメッセージを処理する処理手段と、
を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、マルチパートのメッセージを受信する際に、メッセージの処理時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】メッセージを送受信する通信装置のシステム構成を示す図。
【図２】図１に示す通信装置のハードウェア構成を示す図。
【図３】メッセージを受信した際の処理を示すフローチャート。
【図４】マルチパートメッセージの具体例を示す図。
【図５】拡張ヘッダが付加されていない場合の処理を示すフローチャート。
【図６】拡張ヘッダが付加されている場合の処理を示すフローチャート。
【図７】拡張ヘッダが付加されている場合と付加されていない場合の処理時間の一例を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。まず、メッセージ本体にファイルが添付されたマルチパートのメッセージを送受信する通信装置のシステム構成及びハードウェア構成を、図１及び図２を用いて説明する。
【００１２】
図１に示すように、通信装置である送信側のメッセージ通信装置（送信側装置）１０１と受信側のメッセージ通信装置（受信側装置）１０２がネットワーク１１０によりお互いに接続されている。
【００１３】
ここで、送信側装置１０１も受信側装置１０２もそのハードウェア構成は同じであり、図２に示すように、制御部２０１、入力部２０２、出力部２０３、通信制御部２０４、及び記憶部２０５を備える。制御部２０１は、ＣＰＵ、ＲＯＭ、ＲＡＭ、及び周辺機器などを含み、メッセージ通信装置全体を制御する。入力部２０２は、キーボードやマウスなどを接続するためのインターフェースを含み、メッセージ送受信装置への指示や各種入力を制御する。出力部２０３は、ディスプレイなどを接続するためのインターフェースを含み、メッセージ送受信装置の状態や処理結果などの出力を制御する。通信制御部２０４は、ネットワーク１１０に接続するためのインターフェースを含み、他のメッセージ通信装置との間でネットワーク１１０を介した通信を制御する。記憶部２０５は、大容量記憶装置へのアクセスを制御するインターフェースを含む。そして、各部はシステムバス２１０を介して接続されている。
【００１４】
次に、図３を用いて受信側装置１０２が送信側装置１０１から送られてきたメッセージを受信する際の処理を説明する。尚、この処理は、制御部２０１のＣＰＵがＲＯＭに格納されたプログラムに従って各部を制御してメッセージの受信及び処理を行い、その結果を示すメッセージを作成して送信側装置１０１へ送信する処理である。また、コンピュータを通信装置として機能させるためのプログラムが格納されたＲＯＭは、コンピュータ読み取り可能な記憶媒体である。
【００１５】
まず、Ｓ３０１において、受信側装置１０２の制御部２０１が通信制御部２０４を介してネットワーク１１０上の送信側装置１０１から送られてきるメッセージを受信する。次に、Ｓ３０２において、制御部２０１は受信したメッセージがマルチパートメッセージか否かを判定する。マルチパートメッセージの判定方法としては、例えばトランスポートがHTTPの場合、HTTPヘッダであるContent-Typeヘッダの値がmultipart/relatedであれば、マルチパートメッセージであると判定する。ここで、受信したメッセージがマルチパートメッセージでないと判定した場合（Ｓ３０２でＮＯ）、制御部２０１はＳ３０３へ処理を進め、受信したメッセージを受信側装置１０２に固有の処理を施す。Ｓ３０３での処理が終了すると、Ｓ３０６において、応答メッセージを作成する。そして、Ｓ３０８において、通信制御部２０４を介して応答メッセージを送信側装置１０１へ送信する。
【００１６】
一方、受信したメッセージがマルチパートメッセージであると判定した場合（Ｓ３０２でＹＥＳ）、制御部２０１はＳ３０４へ処理を進め、詳細は後述するマルチパート処理を実行する。次に、Ｓ３０５において、マルチパート処理を行った際に、マルチパート処理でエラーが発生したか否かを判定する。判定した結果、エラー発生であれば（Ｓ３０５でＹＥＳ）、Ｓ３０７へ処理を進め、エラーメッセージを作成し、Ｓ３０８において、通信制御部２０４を介して送信側装置１０１へ送信する。また、マルチパート処理において、エラーが発生せず、正常に処理された場合（Ｓ３０５でＮＯ）、Ｓ３０３へ処理を進める。尚、これ以降の処理は、マルチパートメッセージでないメッセージの場合と同じ処理である。
【００１７】
ここで、送信側装置１０１から受信側装置１０２へ送られるマルチパートメッセージの具体例を図４に示す。図４はマルチパートメッセージの一例を模式化したものである。また、メッセージ通信装置間で送受信されるメッセージはSOAPメッセージであり、一般的にSOAPメッセージが送られるのは、HTTPをトランスポートプロトコルとして通信する場合が多い。しかし、SMTPやその他のプロトコルを使って送信される場合にも、本発明を適用することが可能である。
【００１８】
図４に示すマルチパートメッセージ４０１は、１つのSOAPメッセージに２つのアタッチメントファイルが添付されている例である。図４に示す例では、第二パートと第三パートの中に標準では規定されていないMIMEヘッダにおける独自の拡張ヘッダ４０２及び４０５を示す情報が含まれる。ここで、「X-Canon-Content-Length」の情報は拡張ヘッダのキーを表す文字列である。また、拡張ヘッダ４０２には添付ファイル４０３が添付可能であり、拡張ヘッダ４０５にも添付ファイル４０６が添付可能である。尚、バイナリファイルが添付されている場合、HTTPではバイトデータがバイナリで記述されている。
【００１９】
第二パートに付加された拡張ヘッダ４０２は矢印４０４で示す通り、第二パートの添付ファイル４０３のデータサイズ（コンテンツ長）が“102400”バイトであることを表している。また同様に、第三パートに付加された拡張ヘッダ４０５は矢印４０７で示す通り、第三パートの添付ファイル４０６のデータサイズ（コンテンツ長）が“204800”バイトであることを表している。
【００２０】
次に、図５及び図６を用いて本実施形態におけるマルチパート処理（図３のＳ３０４）を詳細に説明する。まず、送信側装置１０１から拡張ヘッダが付加されていないマルチパートメッセージを受信した場合のマルチパート処理の詳細を、図５を用いて説明する。
【００２１】
Ｓ５０１において、制御部２０１がマルチパートメッセージのMIMEヘッダを読み込む。そして、Ｓ５０２において、制御部２０１はMIMEボディを読み込みながらパートの区切りを示す文字列であるバウンダリ文字列を検索する。この検索では、読み込まれたデータが添付ファイルのデータなのかバウンダリ文字列なのかを判定するために、データの比較を行う必要がある。ここで、添付ファイルのデータサイズが大きい場合、一度でバウンダリ文字列を検索することはできない。そのため、バウンダリ文字列が検出されない場合は（Ｓ５０３でＮＯ）、検索が終了した部分だけ保存領域に保存する必要がある。そこで、Ｓ５０４では、制御部２０１は保存領域が確保できるか否かをチェックする。ここで、保存領域が確保できる場合は（Ｓ５０４でＹＥＳ）、Ｓ５０５へ処理を進め、保存領域に添付ファイルのデータを書き出す。そして、Ｓ５０２に戻り、バウンダリ文字列を検出するまで、上述の処理を何度も繰り返し、バウンダリ文字列を検出すると（Ｓ５０３でＹＥＳ）、Ｓ５０６へ処理を進める。Ｓ５０６では、制御部２０１は検出したバウンダリ文字列の後に次のパートがあるか否かを判定する。ここで、次のパートがある場合（Ｓ５０６でＹＥＳ）、Ｓ５０１に戻り、次のパートが無くなるまで上述した処理を繰り返す。そして、次のパートがなくなると（Ｓ５０６でＮＯ）、この処理を終了する。
【００２２】
一方、制御部２０１がバウンダリ文字列を検索中に保存領域が確保できないと判定した場合は（Ｓ５０４でＮＯ）、Ｓ５０７へ処理を進め、エラーとして処理を終了する。このように、図５に示すマルチパート処理は、バウンダリ文字列を検索しつつ添付ファイルを保存していくため、データサイズが大きな添付ファイルの場合、Ｓ５０２からＳ５０５の処理を何度も繰り返すことになる。即ち、バウンダリ文字列の検索は、文字列一致の処理を行うため何度も繰り返すのには多くの処理時間を費やすことになる。また、Ｓ５０４における保存領域を確保できるか否かの判定は、実際に保存ができなくなるまで繰り返した後でないとエラーの検出をすることができない。
【００２３】
次に、送信側装置１０１から拡張ヘッダが付加されたマルチパートメッセージを受信した場合のマルチパート処理の詳細を、図６を用いて説明する。尚、図５の処理との違いは、Ｓ６０２、Ｓ６０９、及びＳ６１０である。また、拡張ヘッダが付加されてないマルチパートメッセージを受信した場合の処理は図５の処理と同じである。そして、拡張ヘッダが付加されたマルチパートメッセージの一例は図４に示す通りである。
【００２４】
まず、Ｓ６０１において、図５に示す処理と同様に、制御部２０１がMIMEヘッダを読み込み、Ｓ６０２において、拡張ヘッダがあるか否かを判定する。判定の結果、拡張ヘッダが付加されていた場合は（Ｓ６０２でＹＥＳ）、Ｓ６０９へ処理を進め、添付ファイルのデータサイズを示す拡張ヘッダの値に基づいて保存領域が確保できるか否かを判定する。判定の結果、保存領域が確保できる場合は（Ｓ６０９でＹＥＳ）、Ｓ６１０へ処理を進め、データサイズのバイト数だけ保存領域に添付ファイルのデータを書き出す。
【００２５】
保存領域に拡張ヘッダで指定されたバイト数だけデータを書き出すと、直後のデータがバウンダリ文字列になっているので、バウンダリ検索を行うことなく、Ｓ６０７へ処理を進める。この一連の処理で１つのパートの添付ファイルのデータの書き出しが終了するので、Ｓ６０７では、次のパートがあるかを判定する。次のパートがある場合（Ｓ６０７でＹＥＳ）、Ｓ６０１からの処理を繰り返し、次ぎのパートがない場合（Ｓ６０７でＮＯ）、この処理を終了する。
【００２６】
また、保存領域が確保できないと判定した場合（Ｓ６０９でＮＯ）、Ｓ６０８へ処理を進め、エラーとして処理を終了する。上述したように、図６の処理は、図５の処理と比較して予め拡張ヘッダに記述されたバイト数だけを書き出しながら読み飛ばせばいいので、バウンダリ文字列を検索する必要がない。また、予め拡張ヘッダにより、添付ファイルのバイト数がわかっているため、データを書き出す処理に入る前に保存領域が確保できるか否かを判定することができる。
【００２７】
図７は、拡張ヘッダが付加されている場合と付加されていない場合の処理時間の一例を示す図である。この例では、横軸に処理時間をとり、上段の拡張ヘッダ無し７０１が図５の処理を行った場合の例であり、下段の拡張ヘッダあり７０２が図６の処理を行った場合の例である。
【００２８】
図７に示すように、MIMEヘッダの読み込みにかかる時間７１０までに関してはどちらの場合でも同じである。しかし、その後は、拡張ヘッダ無し７０１の場合は拡張ヘッダあり７０２の場合に比べてバウンダリ文字列を検索しなくてはいけないため、処理時間が長くなってしまう。この差は添付ファイルのデータサイズが大きくなるに従って増大していく。よって、拡張ヘッダあり７０２の場合は、拡張ヘッダ無し７０１の場合よりも受信側の処理を高速に行うことができる。
【００２９】
また、拡張ヘッダあり７０２の場合は、７１０の時点で添付ファイルのデータサイズを取得できるのでファイルの保存領域を確保できないというエラーの検出も７１０の時点で行える。これに対して、拡張ヘッダ無しの場合は、実際にデータを書き出す時点７１１、７１３、７１５でのみ保存領域を確保できるか否かが判断可能となる。そのため、７１０、７１２、７１４の時点から開始されるバウンダリ検索中では領域が確保できないというエラーを検出することができない。
【００３０】
このように、拡張ヘッダがある場合は拡張ヘッダが無い場合よりもエラーの検出を早く行うことが可能となり、エラー発生時の処理時間も短縮することが可能となる。
【００３１】
また、Ｓ５０２において、拡張ヘッダがあるか否かの判定を行うことで、図５と図６の処理の分岐が可能である。図５の処理では従来からのマルチパートメッセージ処理が可能であり、図６の処理では処理を高速化し、処理時間を短縮したマルチパートメッセージの処理が可能である。従って、相互接続性を妨げずにより高速にマルチパートメッセージの受信を行うことが可能となり、領域が確保できない場合のエラー通知までの時間の短縮も可能となる。
【００３２】
本実施形態によれば、受信側でバウンダリ文字列を検出する処理を単純化することで、受信時の処理速度を向上させることができる。また、受信側で受け取れないサイズのデータが送られてくる場合にも、そのデータを受信する前にエラーを送信元に通知することでデータがサイズ超過で受け取れないエラー発生時の処理時間を短縮することができる。
【図１】
2010267145.tif 000003
【図２】
2010267145.tif 000004
【図３】
2010267145.tif 000005
【図４】
2010267145.tif 000006
【図５】
2010267145.tif 000007
【図６】
2010267145.tif 000008
【図７】
2010267145.tif 000009