• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:pearでのメール送信)

pearでのメール送信時にファイル名に全角文字が含まれている場合の問題

このQ&Aのポイント
  • pearを使用してメールを送信する際に、ファイル名に全角文字が含まれていると添付が正常に行われない問題が発生しています。
  • 具体的な問題の原因は、ファイル添付時に使用するソースコードで、全角文字に対応していないためです。
  • この問題を解決するためには、ソースコードを修正して全角文字に対応させる必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • 1minn
  • ベストアンサー率57% (52/90)
回答No.2

> 具体的な内容としては、 > ファイル名をエンコードしない場合は、メールの件名が「failure notice」で本文内のエラー表示箇所は > Remote host said: 550 Error: Bad attachment file name extension > というメールが返ってきます。 そのままじゃだめですよ~ って事ですよね。 >ファイル名をエンコードした場合は、outlookでは「無題の添付ファイルxxxxx.dat」となったり、別のメーラーではうまくいったり、ファイル名が文字化けしたりと様々です。 そこらへんの違いはメーラー側の努力の跡です。 ある程度メジャーなメーラーは、極力異なる文字コードでも吸収しようと努力してます > ファイル名のエンコードは下記のようにおこなっています。 > mb_convert_encoding(ファイル名, "SJIS-win", mb_detect_encoding(ファイル名) ) > 文字コードはUTF-8で作成しているため、mb_convert_encodingの第三引数をUTF-8にしても結果は同じでした。 もしwindowsで作ったファイルであれば基本的にはSJISになってると思います。 なので、SJIS指定でエンコードしてもだめですか? あと、mb_detect_encodingに頼ると残念な結果になる事も多いです。 日本語文字コードの判別は、プログラムで完全に行う事はできません。 そこらへんの詳しい事は「mb_detect_encoding」で検索するとちょこちょこ出てくると思いますので、詳し情報はご自身でお調べください。 メールとタイトルのエンコードはJISでいいんですよね?最初に提示されたソースではそれっぽいけど。 とりあえず添付ファイルをSJISに変換しても大概のメーラーは答えてくれないと思いますので、メール本体とエンコードをそろえてみてはいかがでしょうか? 前の投稿にも書きましたが、提示されたソースを元にしかたいていの方は答えられませんよ? 今回ご提示されたソースは1行ですから、この1行の何が間違ってるの? って聞かれても回答はしづらいですよね? ソース全部をベタ貼りする必要はありませんが、関数化位はされてるでしょうから、そこだけでも提示してみてはいかがでしょうか? もしくは今回はメールの文字化けですから、実際に受信したメールのソース(ヘッダ部)を提示された方が早いかもしれません。 OUTLOOKは使ってないのでよくわかりませんが、メジャーなメーラーならソースの表示が出来るはずですよ。

shaka001
質問者

お礼

回答ありがとうございます。 また、お礼が遅くなってしまい申し訳ありません。 何度も回答していただき、恐縮ではありますが 今回はpearではなく、Qdmailという別のライブラリを 使用することで、添付ファイルの問題をクリアできましたので 採用することになりました。 また、質問する機会がありましたらよろしくお願いいたします。

その他の回答 (1)

  • 1minn
  • ベストアンサー率57% (52/90)
回答No.1

ご提示の数行のソースでは正確な回答は得られないと思います。 なので適当な想像ですが、ファイル名に日本語が入ってるって事はSJISだったりとかの日本語の文字コードが設定されるわけですよね? なので、ファイル名自体のエンコードも考えてやればよいのではないですか? ちなみに「うまくいかない」ってのはなにが? 具体的に書かないと、明確な回答はなかなか来ないですよ。

shaka001
質問者

補足

指摘ありがとうございます。 具体的な内容としては、 ファイル名をエンコードしない場合は、メールの件名が「failure notice」で本文内のエラー表示箇所は Remote host said: 550 Error: Bad attachment file name extension というメールが返ってきます。 ファイル名をエンコードした場合は、outlookでは「無題の添付ファイルxxxxx.dat」となったり、別のメーラーではうまくいったり、ファイル名が文字化けしたりと様々です。 ファイル名のエンコードは下記のようにおこなっています。 mb_convert_encoding(ファイル名, "SJIS-win", mb_detect_encoding(ファイル名) ) 文字コードはUTF-8で作成しているため、mb_convert_encodingの第三引数をUTF-8にしても結果は同じでした。

関連するQ&A