CuteFlowで添付ファイルが文字化けする点を解消

以前このブログで取り上げたオープンソースのワークフローシステム、CuteFlow。

CuteFlowは、最初から日本語のランゲージファイルが含まれているので、特に何かすることなくメニューを日本語にすることができますが、残念ながら肝心のメールや承認画面等で一部文字化けを起こしてしまいます。
これはメールのエンコードが適切でないことが原因。

なので、以下の記事を参考にモジュールの修正を行いました。

cuteflowの文字化けを解消する | Ryuzee.com -りゅーじーどっとこむ-

http://www.ryuzee.com/contents/blog/431

これでメール自体は問題なく利用できるようになります。

添付ファイルが文字化けする・・・!

・・・が、社内に導入してテストしていると、添付ファイルのファイル名が文字化けしてしまうことを発見。ファイルの中身は何の問題もないのですが、ファイル名に日本語を利用している場合、ファイル名だけが化けてしまいます。
ファイル名に日本語を使わなければいい話なのですが、社内で利用するワークフローなので、「交通費精算書.xls」だとか、「なんとかマニュアル.doc」なんてファイルを回覧したい場合も多々あるはず。

なぜ文字化けしてしまうのか、と調べていたところ、どうやらメールのヘッダーで、添付ファイルのファイル名がきちんとエンコードされていないことが判明。

ちなみにこんな感じ。

Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=”??�堺???宴???宴??????�堺???�?�?絲��.xlsx”

メールのSubjectはこのようにきちんとエンコードされている。

From: CuteFlow_System-no_reply_allowed@example.com
Subject: =?UTF-8?Q?=E5=9B=9E=E8=A6=A7?=: =?UTF-8?Q?=E3=81=82=E3=81=82=E3=81=82?=
X-Mailer: CuteFlow Document Workflow System
Date: Wed, 30 Apr 08 17:51:37 +0900
Content-Type: multipart/mixed;
boundary=”=_43b0d4780ca30d83e24dfc633740f1a7″
Message-ID: <k04ra1 .uto9pw@xxxxx.xxx>
To: xxxxx@example.com

なので、添付ファイルのfilenameの部分だけエンコードが施されていないのが原因だと思われます。

メールを作成するモジュール周りに手を加えてみる

メール本体を作成しているのは、メールの文字化けでも手を加えた
lib/htmlMimeMail.php
です。
これの386行目が、添付ファイルのファイル名になります。
その386行目を以下のように変更します。

/**
* Adds a file to the list of attachments.
*/
        function addAttachment($file, $name = '', $c_type='application/octet-stream', $encoding = 'base64')
        {                $this->attachments[] = array(
                                                                        'body'          => $file,
                                                                        #'name'          => $this-> $name,
                                                                        'name'          => $this->_encodeHeader($name),
                                                                        'c_type'        => $c_type,
                                                                        'encoding'      =>$encoding                                                                  );
        }

$nameに対し、メール本文のエンコードにも利用しているencodeHeaderメソッドを適用しちゃうということですね。

これで私の場合はうまくいきました。
うまくいかなかった場合コメントあたりでご連絡ください。

Comments:1

おざわ 09-04-27 (月) 19:37

上記の添付ファイルの文字化け対応をしてみたところ、

Parse error: parse error, expecting `’)” in C:\Inetpub\wwwroot\CuteFlow\lib\htmlMimeMail.php on line 386

とエラーが発生してしまいます。
PHPは全くといっていいほどわからないため、ほとほと困り果てています。
解決策が見つかりましたら、ご教授願えないでしょうか。

よろしくお願いします。

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://jaco.dotstyle.net/2008/05/cuteflow%e3%81%a7%e6%b7%bb%e4%bb%98%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%8c%e6%96%87%e5%ad%97%e5%8c%96%e3%81%91%e3%81%99%e3%82%8b%e7%82%b9%e3%82%92%e8%a7%a3%e6%b6%88/trackback/
Listed below are links to weblogs that reference
CuteFlowで添付ファイルが文字化けする点を解消 from JB_Plus
pingback from » CuteFlowの日本語化(DB内の格納データについて) » アリンコネット 09-02-25 (水) 2:18

[...] CuteFlowで添付ファイルが文字化けする点を解消 [...]

Search
Feeds
Meta

Return to page top