具体的には、日本語ファイル名・英語ファイル名にかかわらず、
「添付ファイル1_20101125.xls」 みたいなファイル名だと、
・ァイル1_20101125.xls
・_20101125.xls
・xls
こんな感じで、ファイル名の前半が切れて見えるようだ。
特にNotesクライアントのメーラーでよく発生するようで、企業では結構Notesメール使ってるところも多い事を考えると、なんとか対策したいところ。
WLから送信して、
→ WL受信:正常
→ Outlook:稀におかしい
→ ThunderBird:正常
→ Notesメール:かなりの確率で発生する。
という感じ。
受信側でメールのプレーンテキストを見てみると、添付ファイル名のデコードがうまくいってない感じ。
今まではFLIMを使って、ここを参考に、.emacsへ以下を追記して使っていた。
:;; 日本語の添付ファイル名を正しく表示。これがないと化ける。 (defvar my-mime-filename-coding-system-for-decode '(iso-2022-jp japanese-shift-jis japanese-iso-8bit)) (defun my-mime-decode-filename (filename) (let ((rest (eword-decode-string filename))) (or (when (and my-mime-filename-coding-system-for-decode (string= rest filename)) (let ((dcs (mapcar (function coding-system-base) (detect-coding-string filename)))) (unless (memq 'emacs-mule dcs) (let ((pcs my-mime-filename-coding-system-for-decode)) (while pcs (if (memq (coding-system-base (car pcs)) dcs) (setq rest (decode-coding-string filename (car pcs)) pcs nil) (setq pcs (cdr pcs)))))))) rest))) (eval-after-load "mime" '(defadvice mime-entity-filename (after eword-decode-for-broken-MUA activate) "Decode encoded file name for BROKEN MUA." (when (stringp ad-return-value) (setq ad-return-value (my-mime-decode-filename ad-return-value))))) (require 'std11) ;;; ファイル名が日本語の添付ファイルをエンコードする [semi-gnus-ja: 6046] (eval-after-load "std11" '(defadvice std11-wrap-as-quoted-string (before encode-string activate) "Encode a string." (require 'eword-encode) (ad-set-arg 0 (eword-encode-string (ad-get-arg 0)))))
これでは受信メールの日本語は正しく取り扱えても、送信メールでうまくいかな事があるので、FLIMからLIMITに変える事で対策した。
方法については以前の記事を修正しておいたので、そちらを参照。
参照>> Emacs仕事術(5)メールとWEB