- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メール件名の表示について)
メール受信表示の件名表示について
このQ&Aのポイント
- メールの受信表示をwebするプログラムを作成しましたが、日本語の件名が正しく表示されません。
- 「中国の消費者物価、4月は8.5%上昇・食料品など高止まり」が「中国の消費者物価、4月は8.5」のように途中で切れてしまいます。
- 正しく表示させるにはどのようにしたらよいでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
長い件名は、メールヘッダー内に1行では書き出されません。 その為、複数行からのデコードに対応していない上記処理では途切れてしまうのです。 foreach でヘッダーの各行ごとに処理をする方法を一旦やめます。 1つのスカラー変数(たとえば$header)にヘッダーのすべての行をつなげて取り込ませます。 その後下記のように書くことで、%header に各ヘッダー項目が格納できます。 my %header = ( '', split( /(^[\w\-]+\: )/m, $header ) ); chomp %header; 今回は、件名がほしいので $header{'Subject: '}をデコードさせて $sub に移し替えればOKです。
その他の回答 (1)
- atom_seed
- ベストアンサー率48% (25/52)
回答No.2
少しきれいに、かつ、具体的に書き直してみました。 これでどうでしょう? my %header = ( '', split( /^([\w\-]*)\: /m, $header ) ); chomp %header; $sub = jcode( $header{'Subject'} )->mime_decode()->sjis;
お礼
ありがとうございます。 大変助かります。 「1つのスカラー変数(たとえば$header)にヘッダーのすべての行をつなげて取り込ませます。」の部分について、具体的にどのように記述したよいでしょうか? ご教授いただけると助かります。
補足
本来は、「お礼」で記載すべきかと思いますが、解決しましたので、ここでお礼をさせていただきます。 ありがとうございました。大変助かりました。