<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> 
<HTML>
<HEAD>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=shift_jis">
   <META NAME="Author" CONTENT="ktkawabe">
   <META NAME="GENERATOR" CONTENT="ktkawabe's hand with JMemo, ME,
      emacs, and Meadow">
   <TITLE>XJMailと他メイラとのデータの相互変換</TITLE>
</HEAD>
  <body>
<center>
[<a href="../index.html">表紙</a>]
[<a href="../densha.html">ソフトウェア配布</a>]
[<a href="../prog.html">プログラミング</a>]
[<a href="../hardware">ハードウェア</a>]
[<a href="../others.html">その他</a>]
[<a href="http://a.hatena.ne.jp/ktkawabe/">アンテナ</a>]
</center>
<hr>
<H1>
XJMailと他メイラとのデータの相互変換</H1>
<B>Updated 2002/02/17</B><br>
<p>
XJMailのデータ形式は<a href="importer.txt">公開されている</a>ので、
他のメイラとの間で容易にデータ交換が可能です。
とはいえ、どうやったらよいのか実例が無いと判らないという方も
いらっしゃると思いますので、ここではデータ交換の実例だけを羅列させて
いただきます。</p>
<hr>
<h2>目次</h2>
<ul>
      <li><a href="#note">一般論</a><ul>
	  <li><a href="#non_modified">「受信したメイルのデータを
              いじらないメイラ」との間のデータ交換</a></li>
	  <li><a href="#Tool">移行ツールまたは
              メイラの読み込み/書き出し機能が使える場合</a></li>
	</ul></li>
      <li><a href="#examples">事例</a><br>
        <table border="1">
          <tr>
	    <td>分類</td>
	    <td>メイラ</td>
	    <td>XJMail &gt; 他メイラ</td>
	    <td>他メイラ &gt; XJMail</td>
            <td>方法</td>
	    <td>制限</td>
          </tr>
          <tr>
	    <td rowspan="2">MH形式の例</td>
	    <td><a href="#sylpheed">Sylpheed</a></td>
	    <td>O</td>
	    <td>O</td>
	    <td>ファイル名変更。
                Sylpheed &gt; XJMailの場合には文字コード変換も。</td>
	    <td>特に無し?</td>
          </tr>
          <tr>
	    <td><a href="#Mew">Mew</a></td>
	    <td>O</td>
	    <td>O</td>
	    <td>ファイル名変更、文字コード変換</td>
	    <td>XJMail &gt; Mewで時に文字化け</td>
          </tr>
          <tr>
	    <td rowspan="3">MailExp使用例 (Windows)</td>
	    <td><a href="#becky">Becky! (Version 1.x)</a></td>
	    <td>O</td>
	    <td>O</td>
	    <td>MailExp</td>
	    <td>添付ファイル不可</td>
          </tr>
          <tr>
	    <td><a href="#den8">電信8号</a></td>
	    <td>O</td>
	    <td>O</td>
	    <td>MailExp</td>
	    <td>特に無し?</td>
          </tr>
          <tr>
	    <td><a href="#qmail2">QMAIL2</a></td>
	    <td>O</td>
	    <td>O</td>
	    <td>MailExpとインポート/エクスポート機能併用</td>
	    <td>特に無し?</td>
          </tr>

          <tr>
            <td>独自形式、外部プログラム無しの例</td>
	    <td><a href="#tsurukame">鶴亀メール</a></td>
	    <td>O</td>
	    <td>O</td>
	    <td>インポート/エクスポート機能、ファイル名変更</td>
	    <td>特に無し?</td>
          </tr>
	</table>
      </li>
    </ul>
<hr>
<h2><a name="note">一般論</a></h2>
<p>
たかがデータの移動ごときで何も考えたく無いと御考えの方は、
ここは飛ばしてまず<a href="#examples">事例集</a>をご覧下さい。
自分の興味のあるメイラが事例集に記載されていないとか、もうちょっと
詳しく事情を知りたい、という場合には、以下の情報が役に立つでしょう。</p>
<p>
XJMailのメイルの格納形式は、XJMail importerに関する文書
<a href="importer.txt">importer.txt</a>の中でも公開されているのですが、
ここでも簡単にまとめておきますと</p>
<ul>
      <li>一メイルが一ファイルに対応</li>
      <li>ヘッダの日本語部分は、SHIFT_JISに変換</li>
      <li>本文で Charset=ISO-2022-JPでContent-Transfer-Encoding=7bitの部分、
もしくはMIMEを使わないローカライズされたRFC822のメイルの本文につい
ては、SHIFT_JISに変換</li>
    </ul>
<p>
というだけのものです。
常人に理解不能な形式を使用するメイラで無ければ、必ず相互変換可能です。
</p>
<h3>
<a name="non_modified">「受信したメイルのデータをいじらないメイラ」
との間のデータ交換</a></h3>
<p>
POPサーバなりスプールに溜まったメイルなりを持って来て、あまり余計な
変換をしたりせずに
そのまま(まとめて、あるいは一メイル一ファイルにして)格納している
タイプのメイラでは、以下の様な手順でデータ変換が可能です。
Unix/UnixクローンのOS上で動くメイラには
この様なものが多い様です。</p>
<ul>
      <li>この様なメイラからXJMailにデータを移すには、以下の様にします。
          <ol>
          <li>複数のメイルがまとめて1ファイルになっている場合、
                 それを切り分ける。mboxの場合には、更に
              メイル間の切れ目のFromではじまる行を削除し、その他の
              "&gt;From<em>空白</em>"ではじまる行を"From<em>空白</em>"
              ではじまるように置換すると良いでしょう。
              </li>
	  <li>ほぼ完全な移行を行う場合には、それらのファイルをXJMailの
              inboxフォルダにコピーし、tmp???? (????は4桁の10進正数)
              という名前に変更します。
              次に、XJMail側でPOP動作を行い、通信がはじまる前に
              Ctrl+Eでキャンセルします。すると、XJMailが tmp????を
              XJMailの内部形式にデコードしますので、完全な移行が
              行える事でしょう。</li>
	  <li>もしも移行対象のメイルに日本語もしくはus-ascii以外の
              Charsetが含まれない事が判っているのであれば、nkf等の
              文字コード変換プログラムを使用して漢字コードを Shift-JISに
              変換する事で XJMailで読める様になります。この例は
              <a href="#sylpheed">Sylpheed</a>, <a href="#Mew">Mew</a>
              のところでも紹介しています。</li>
	</ol>

</li>
      <li>XJMailからこの様なメイラにデータを移すには、
          以下の様な作業を行います。<ol>
	  <li>XJMailのフォルダから、ファイルを適当な場所にコピー</li>
	  <li>相手メイラが「不正なメイルでも出来る限り表示してくれる」
              様な寛容なタイプであれば、あとはファイル名を適当に変更するだけで
              移行完了です。</li>
	  <li>相手メイラが「不正なメイルは不正なので表示しません」という
              タイプであれば、相手が許してくれる程度にファイルの中身を
              いじらなければならないでしょう。メイルの中身が日本語であると
              判っているのであれば、文字コードを変換するだけでもそれなりに
              納得出来る結果が得られると思われます。</li>
	  <li>相手メイラが複数メイルを一ファイルにまとめているのであれば、
              それに応じてXJMail側のファイルをまとめてやります。
	</ol></li>
    </ul>

<h3><a name="Tool">移行ツールまたはメイラの読み込み/書き出し機能が使用
出来る場合</a></h3>
<ul>
      <li>
Windowsで動作する MailExp
(<a href="http://www.digico-m.com/shin1">http://www.digico-m.com/shin1/</a>)
というメイルデータの移行ツールは、
かなりな数のメイラに対応しています。
XJMailのデータ形式は、このツールでは「プレインテキスト形式」に対応している
模様なので、それさえ判っていれば多数のメイラとの間でデータ交換が可能に
なります。実際にこの文書でも、MailExpを用いた実例
(<a href="#becky">Becky!</a>, <a href="#den8">電信8号</a>, 
<a href="#qmail2">QMAIL2</a>) を紹介させていただいております。
</li>
<li>自分自身でメイルのインポート/エクスポート機能を備えているメイラの場合、
その機能を使えばダイレクトにXJMailとのデータ交換が可能になることもあります。
この文書では、その様な実例として Windowsで動作する
<a href="#tsurukame">鶴亀メール</a> の場合を紹介させていただいております。
</li>
<li>マイナーな独自フォーマットでデータを格納しており、しかも読み込み/書き出し
機能が無いメイラの場合、
そのプログラムに特化した変換プログラムが必要になるでしょう。そういうものが
存在しなければ、自分で書くかあきらめるしかありません。
例としては、
EPOC Release 3の Emailに対するXJMailの Importerがあるのですが、
それについてはこのページでは紹介しません。
ご興味をお持ちの方は、<a href="../densha.html">ソフトウェア配布</a>
のページで、ER3 MessageSuite Importer Module for XJMailを
ご覧になってください。</li>
    </ul>
<hr>
<h2><a name="examples">事例</a></h2>
<h3>MH形式の例 (<a name="sylpheed">Sylpheed</a>, <a name="Mew">Mew</a>)</h3>
<table border="1">
      <tr>
	<td>確認環境</td>
	<td>Sylpheed 7.1
<a href="http://sylpheed.good-day.net/">http://sylpheed.good-day.net/</a>
            on Vine Linux 2.1.5 (X86)<br>
Mew 1.94.2
<a href="http://www.mew.org">http://www.mew.org</a>
on GNU Emacs 20.7.2 on VineLinux 2.1.5
</td>
      </tr>
      <tr>
	<td>XJMailからSylpheed/Mew</td>
	<td>Sylpheedの場合、基本的にやる事はファイルのコピーとファイル名
            変更だけ。
            XJMailから適当なファイルを Sylpheedの側の適当なフォルダに
            移し、ファイル名をたとえば0010から10にすれば良い。<br>
            が、ISO-2022-JPと宣言してある部分にSJISが使われていると
            Mewが許してくれないので、
            私の場合以下の様なスクリプトで文字コードも変更し、
            出来たファイル
            (ファイル名がゼロではじまらないもの)をSylpheed/Mew側にコピーする。<br>
<strong>#!/bin/sh<br>
for i in [0-9][0-9][0-9][0-9]; do nkf -S -j $i > `echo $i |  sed s/^0*//`; done;</strong><br>
(但し、日本語とそうでないCharsetがmultipartで混在している様な場合、
うまく行かないこともあるかもしれません。
このスクリプトでは
charset=shift_jisや charset=euc_jpであっても iso-2022-jpに変換されて
しまいますが、
Mewはその様なメイルを読ませてくれないかもしれません。
更に言えば、MIME-Versionがヘッダ部分に宣言されていても、ヘッダに生の
ISO-2022-JPが入ってしまうので、やはりMewではきちんと読ませてくれない
かもしれません。どの程度まで読ませてくれるかどうかは、Mewの設定や
バージョンによるのだと思われます。
Mewでちゃんとしたい方は、ちゃんとしたスクリプトを自作してください。)
</td>
      </tr>
      <tr>
	<td rowspan="2">Sylpheed/MewからXJMail</td>
	<td>簡易版: やる事はファイルのコピーとファイル名変更、日本語部分の
            文字コード変換である。日本語のメイルである事が判っている
            のであれば、以下の様なスクリプトで大抵の場合大丈夫である。<br>
<strong>#!/bin/sh<br>
for i in *; do nkf -s $i > `echo $i | perl -ne '\$j="000$_"; \$j=~m/.*([0-9]{4})/; print "$1";'`; done</strong><br>
但し、日本語とそうでないCharsetがmultipartで混在している様な場合、
うまく行かないこともあるかもしれません。そういうのが気になる方は、
下の方法を試しましょう。<br>
</td>
      </tr>
      <tr>
	<td>安全版: MHフォルダ側のメイルを適当なフォルダにコピーし、
           以下の様なスクリプトでtmp????というファイル名に変更する。
<br>
<strong>#!/bin/sh<br>
for i in *; do mv $i tmp`echo $i | perl -ne '\$j="000$_"; \$j=~m/.*([0-9]{4})/; print "$1";'`; done</strong><br>
出来上がったファイルを、XJMailの適当なアカウントのinboxフォルダにコピー。
Ctrl+rでPOPしようとする。
通信開始前に切断。
するとtmp????が XJMailによって XJMail形式に変換される。</td>
      </tr>
    </table>
<hr>
<h3>MailExp使用例 (<a name="Becky">Becky!</a>)</h3>
<table border="1">
      <tr>
	<td>確認環境</td>
	<td>Becky! Internet Mail (Ver.1.26.02) (<a href=<http://www.rimarts.co.jp/">http://www.rimarts.co.jp</a>)/ Windows98</td>
      </tr>
      <tr><td>XJMailからBecky!</td>
	<td>XJMailのメイルをWindows上の適当なフォルダにコピー。
            MailExp起動。<br>「入力」タブでファイル形式を
           「プレーンテキスト」とし、先ほどコピーしたファイルを
            選択。
            <br>「出力」タブのファイル形式を「Becky!」とし、適当な
            フォルダを選択して「変換+纏め開始」ボタンを押す。
            <br>生成されたファイル(????.MBX)を Becky!の適当な
                フォルダの下に置き、Becky!を起動。</td>
      </tr>
      <tr>
	<td>Becky!からXJMail</td>
	<td>MailExp起動。<br>「入力」タブでファイル形式を「Becky!」とし、
            Becky!側の移したいメイルフォルダ
            (<em>フォルダ名</em>.MBX)を選択する。<br>
            「出力」タブのファイル形式を「プレーンテキスト」にする。
            適当なフォルダを選択する。
            「ファイルNo.」のところで拡張子が".TXT"等となっているので、
            それはDELキーで削除。更にファイル名が0000になっていたら
            0001等(4桁10進正数)へと変更。「分割開始」ボタンを押す。
            生成されたファイルをXJMailのフォルダにコピーし、同フォルダに
            移動し、Ctrl+Shift+R (もしくはindex.jm5を削除して XJMailを
            起動)。</td>
      </tr>
      <tr>
	<td>注意</td>
	<td>添付ファイルはうまく移行出来ない</td>
      </tr>
    </table>
<hr>
<h3>MailExp使用例 (<a name="den8">電信8号</a>)</h3>
<table border="1">
      <tr>
	<td>確認環境</td>
	<td>電信8号 32.1.3.1
 (<a href="http://denshin8.esprix.net/">http://denshin8.esprix.net/</a>)/
 Windows2000/98</td>
      </tr>
      <tr><td>XJMailから電信8号</td>
	<td>XJMailのメイルをWindows上の適当なフォルダにコピー。
            MailExp起動。<br>「入力」タブでファイル形式を
           「プレーンテキスト」とし、先ほどコピーしたファイルを
            選択。
            <br>「出力」タブでファイル形式「電信8号」を選択
            (<em>既読、未読、透過の三つあるのですが、適当に選びます</em>)。
            適当なフォルダを選択して「コピー開始」ボタンを押す。
            <br>生成されたファイル(????.TXT)を 電信8号の適当な
                フォルダの下に置き、電信8号を起動。電信8号から
                「フォルダ」-&gt; 「最新の状態に更新」。</td>
      </tr>
      <tr>
	<td>電信8号からXJMail</td>
	<td>MailExp起動。<br>「入力」タブでファイル形式「電信8号」を選択。
            電信8号側の移したいメイル(<em>????</em>.TXT)を選択する。<br>
            「出力」タブのファイル形式を「プレーンテキスト」にする。
            適当なフォルダを選択する。
            「ファイルNo.」のところで拡張子が".TXT"等となっているので、
            それはDELキーで削除。更にファイル名が0000になっていたら
            0001等(4桁10進正数)へと変更。「コピー開始」ボタンを押す。
            生成されたファイルをXJMailのフォルダにコピーし、同フォルダに
            移動し、Ctrl+Shift+R (もしくはindex.jm5を削除して XJMailを
            起動)。</td>
      </tr>
    </table>
<hr>
<h3>MailExp使用例 (<a name="qmail2">QMAIL2</a>)</h3>
<table border="1">
      <tr>
	<td>確認環境</td>
	<td>QMAIL for Windows 2.0.8 (<a href="http://www.kiwi-us.com/~snak/software/qmail2/">http://www.kiwi-us.com/~snak/software/qmail2/</a>)/ Windows2000<br>
            注意: MTAのqmailの事ではありません。</td>
      </tr>
      <tr><td>XJMailからQMAIL２</td>
	<td>XJMailのメイルをWindows上の適当なフォルダにコピー。
            MailExp起動。<br>「入力」タブでファイル形式を
           「プレーンテキスト」とし、先ほどコピーしたファイルを
            選択。
            <br>「出力」タブでファイル形式「標準UNIX From」を選択。
            適当なフォルダを選択して「纏め開始」ボタンを押す。
            <br>QMAIL2起動。先ほど生成されたファイル(????.TXT)を
            "File" -&gt; "Import"で読み込む。</td>
      </tr>
      <tr>
	<td>QMAIL2からXJMail</td>
	<td>QMAIL2起動。移行したいメイルを選択して"File" -&gt; "Export"。<br>
            MailExp起動。<br>「入力」タブでファイル形式「標準UNIX From」選択。
            先ほど生成されたファイルを選択する。<br>
            「出力」タブのファイル形式を「プレーンテキスト」にする。
            適当なフォルダを選択する。
            「ファイルNo.」のところで拡張子が".TXT"等となっているので、
            それはDELキーで削除。更にファイル名が0000になっていたら
            0001等(4桁10進正数)へと変更。「変換+分割開始」ボタンを押す。
            生成されたファイルをXJMailのフォルダにコピーし、同フォルダに
            移動し、Ctrl+Shift+R (もしくはindex.jm5を削除して XJMailを
            起動)。</td>
      </tr>
    </table>
<hr>
<h3>メイラ側の機能で(ほぼ)対応可能な例 (<a name="tsurukame">鶴亀メール</a>)</h3>
<table border="1">
      <tr>
	<td>確認環境</td>
	<td>鶴亀メール 1.61 (<a href="http://hidemaru.xaxon.co.jp/software/tk.html">http://hidemaru.xaxon.co.jp/software/tk.html)</a>/ Windows2000</td>
      </tr>
      <tr>
	<td>鶴亀メールからXJMail</td>
	<td><p>あらかじめ、移行用のフォルダを作っておき、そのフォルダに
        中身は空で良いので "Export000000.eml" というファイルを生成しておく。
        <br>鶴亀メール起動。移行したいメイルを選択。
          「ファイル」-&gt; 「エクスポート」。<br>
           「形式」は「1メール1ファイル形式」。「ファイル名の形式」は
           「連番タイプ」。「エンコードする」と「自動折り返し」には
            チェックせず。「次へ」。<br>
        先ほど用意したフォルダを選択し、「OK」。Export??????.emlという
        ファイルが生成される。これらのファイルを4桁10進正数のファイル名
        にしてやれば、XJMailでそのまま読む事が出来る。</p>
        <table border="1">
	    <tr>
	      <td>例1</td>
	      <td>
        河邊の環境ではWindows側にshとperlがインストールしてあったので、
        以下の様なスクリプトでファイル名を変換した。<br>
        <strong>#!/bin/sh<br>
        for i in Export??????.eml;
        do cp $i `echo $i | perl -ne '$_=~m/.*([0-9]{4})\.eml/; print "$1";'`; done;</strong></td>
	    </tr>
	    <tr><td>例2</td>
	<td>もしshやらperlやらが無いのであれば、
        DOSのコマンドだと苦しいと思うので
        Windowsに付属のVBScriptとか何とかスクリプトとかで頑張ってください。
        例えば
        <br><strong>Dim fs, fol, files, file<br>
Set fs = CreateObject("Scripting.FileSystemObject")<br>
Set fol = fs.GetFolder(".\")<br>
Set files = fol.Files<br>
For Each file in files<br>
&nbsp;	If StrComp(Left(file.Name, 6), "Export", 1)=0 Then<br>
&nbsp;&nbsp;		file.Copy Mid(file.Name, 9, 4)<br>
&nbsp;	End If<br>
Next<br>
</strong>
これをtk2xjm.vbs等という名前で該当フォルダに置いておき、
Export??????.emlというファイルが出来てからダブルクリック。
</td>
	    </tr>
	  </table>
        <p>出来たファイル(0001等)をXJMail側のフォルダにコピーし、XJMail起動。
        同フォルダに移動し、Ctrl+Shift+R (もしくはindex.jm5を削除して XJMailを
            起動)。</p>
        </td>
      </tr>
      <tr>
	<td>XJMailから鶴亀メール</td>
	<td>XJMailのファイルを適当なフォルダにコピー。
        <br>鶴亀メール起動。
          「ファイル」-&gt; 「インポート」。<br>
           「1メール1ファイル形式」。「次へ」。<br>
            「ファイルを1つ1つ指定する」。「次へ」。<br>
             移行したいファイルを選択。「Open」。これで終わり。</td>
      </tr>
</table>
<hr>
このページ (http://www.hi-ho.ne.jp/~ktkawabe/XJMail/xjm_conv.html)
へのリンクは御自由にどうぞ。
なお、嘘を書こうという気は毛頭無いにせよ、
ktkawabeはこのページに書いてある内容の正確性をいかなる意味でも
保証する事は出来ません。
<br>
ktkawabe&nbsp;@&nbsp;hi-ho.ne.jp
</BODY>
</HTML>


