[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mhc:02149] Re: 添付 vCalendar の import
白井です。
# 結局? mhc2au はすっかりあきらめて、携帯には today を改造して
# 一週間の予定一覧メール、mhc-alarm を改造してアラームメールを送
# るっていうので満足してしまいました ^^;
## だって、携帯電話(A1402SII)がきちんと解釈できる vcalendar を作
## るのがとってもとっても面倒くさかったのだもん。Zaurus 買ったか
## らいつでも MHC が身近にあるし ^^;;;
From: NOGUCHI Yusuke <nogunogu@xxxxxxxxxxxxxxxxx> さん曰く
Subject: [mhc:02148] 添付 vCalendar の import
Message-ID: <20050907.190035.82050715.nogunogu@xxxxxxxxxxxxxxxxx>
Date: Wed, 07 Sep 2005 19:00:35 +0900 (JST)
> mhc -> W21CAII 方向のエクスポートは特に問題はなく
> mhc->(mhc2ol)->outlook<=>(同期ツール(※1))<=>W21CAII
> (※1) http://www.mysync.jp/ 等の売り物
こういうのは Palm の方が便利だったんですよねぇー。
携帯電話は癖がありすぎます。
> 大半はこの方向なのですが、稀に外出先でスケジュールが決まることがあります。
> そのような場合は、とりあえず W21CAII のスケジューラに直接スケジュール
> を登録するのですが、この「W21CAII で登録したスケジュールを、なるべく楽
> に mhc へ持っていきたい」と思っています。
# ちなみにぼくがそういうことをする場合は、携帯に登録してある定型
# 文(MHC が間違いなく解釈出来るフォーマット)を使って、メールを出
# して、MHC で取り込みます。ごめんなさい。軟弱です。
> (1) 本来は、通常の import 同様に、 C-c . | (mhc-import) でとりこむよう
> にしたかったのですが、mhc-default-import-original-article が nil の
> 状態では、guess の機構がまったく働いてくれません。
これは、"C-uC-c.|" と "C-u" をつければ
mhc-default-import-original-article => t と同じ動きになります。
ただし、mhc-default-import-original-article => t のとき(要するに
multipart をそのまま import するとき) の機能は (Mew に関しては)
非常にいいかげんでして、Mew で言えば "," したものをそのままイン
ポートするだけです。で、それで作ったスケジュールを
mhc-draft-finish() するときの解析がそれ以上にいいかげんになって
います。
# MS-Word とか地図の画像などはこれでうまく行くので ^^;;;
# 他の MUA は知りません。
また、野口さんご指摘のように、
Content-Type: text/x-vcalendar
のように CT が Text だと Mew が Base64 を Decode しちゃうから
> Content-Transfer-Encoding: base64
と矛盾が発生するのですね。
ぼくが考えるに、
> 暫定処置として vCalendar の取り込み時だけ、一時的に
> mhc-default-import-original-article =t とする wrapper 関数を作りま
> した。
このラッパで、
(1) Content-Type: text/x-vcalendar なパートを探して、
(2) Content-Type: text/x-vcalendar; charset=ISO-2022-JP と
charset を追加して、
(3) Content-Transfer-Encoding: base64 => 7bit に変換して、
(その行を消しても OK)
(4) SUMMARY;ENCODING=QUOTED-PRINTABLE:=83e=83X=83g などをデコー
ドしてから、
(5) mhc-edit() に渡す。
とうまく行くような気がします。ちなみに、(4) のデコード方法は、基
本的には
(a) q-enc された string を mew-q-decode-string に渡して、
(b) shift_jis で decode-coding-string する。
とほどけます。(携帯電話は utf-8 にあらず)
(decode-coding-string
(mew-q-decode-string "=83e=83X=83g")
'shift_jis)
=> "テスト"
# Mew じゃないと quoted-printable-decode-string() かな?
エラーしたときとか、multi-part の boundary とかまったく考えてい
ませんが、こんな感じになりました。
(defun mhc-import-vcalendar ()
"Wrapper function of mhc-import() for importing vCalendar."
(interactive)
(mhc-window-push)
(let ((buf (mhc-summary-get-import-buffer 'original)))
(save-excursion
(set-buffer buf)
(let ((buffer-read-only nil)
start qstr)
(goto-char (point-min))
(when (re-search-forward "^Content-Type: text/x-vcalendar" nil t)
(delete-region (point) (line-end-position))
(insert "; charset=ISO-2022-JP")
(when (re-search-forward "^Content-Transfer-Encoding:" nil t)
(delete-region (line-beginning-position)
(progn (forward-line) (point)))
(while (re-search-forward ";ENCODING=QUOTED-PRINTABLE:" nil t)
(setq start (match-beginning 0))
(setq qstr (buffer-substring (match-end 0) (line-end-position)))
(forward-line)
(while (eq (aref qstr (1- (length qstr))) ?=)
(setq qstr (substring qstr 0 -1))
(setq qstr (concat qstr
(buffer-substring (point) (line-end-position))))
(forward-line))
(delete-region start (point))
(setq qstr (decode-coding-string (mew-q-decode-string qstr) 'shift_jis))
(insert ":" qstr "\n"))))))
(unless (mhc-edit buf)
(mhc-window-pop))))
## 息抜き終了 :-)
--
白井秀行 (mailto:shirai@xxxxxxxxxxxxx)