CodeIgniterで日本語名のファイルをメールに添付する際の注意

CodeIgniterに限らずかもしれませんが試してませんのでCodeIgniterって事で。

  • 発生した問題
    CodeIgniterから日本語名(マルチバイト全般?)のファイルをメールに添付して送信すると日本語部分が消える。
    データ自体に異常は発生しませんでした。例)送信時;日本語filename.txt → 受信したファイル:filename.txt
  • 解決方法
    ファイル名をISO-2022-JPにエンコードする。
    例)$this->email->attach(mb_convert_encoding(“日本語filename.xls”, ‘ISO-2022-JP’, ‘UTF-8’));

    system/libraries/Email.phpの_build_message()メソッドで

    for ($i=0; $i < count($this->_attach_name); $i++)
    {
    $filename = $this->_attach_name[$i];
    $basename = basename($filename);
    $ctype = $this->_attach_type[$i];

    というところがあるので、
    $basename = basename($filename);

    $basename = mb_substr(mb_strrchr($filename, "/"), 1);
    に置き換える。
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中