- 2008-05-15 (木) 10:02
- PHP | Webアプリケーション
以前このブログで取り上げたオープンソースのワークフローシステム、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メソッドを適用しちゃうということですね。
これで私の場合はうまくいきました。
うまくいかなかった場合コメントあたりでご連絡ください。
- Newer: CuteFlowでメーリングリストのリストが消えない件
- Older: デュアルディスプレイ環境において画面サイズを取得するときの挙動
Comments:1
- おざわ 09-04-27 (月) 19:37
-
上記の添付ファイルの文字化け対応をしてみたところ、
Parse error: parse error, expecting `’)” in C:\Inetpub\wwwroot\CuteFlow\lib\htmlMimeMail.php on line 386
とエラーが発生してしまいます。
PHPは全くといっていいほどわからないため、ほとほと困り果てています。
解決策が見つかりましたら、ご教授願えないでしょうか。よろしくお願いします。
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で添付ファイルが文字化けする点を解消 [...]