※ ChatGPTを利用し、要約された質問です(原文:ParserにおけるSubjectの取得)
ParserにおけるSubjectの取得
このQ&Aのポイント
メールを別のメールアドレスに送信するためのParserを作成していますが、Subjectの取得がうまくいきません。
現在、メールを標準入力で取得して解析を行っていますが、Subjectの値が正しく表示されません。
解決策を検索してみましたが、うまくいかないため、助言が欲しいです。
現在、特定のアドレスに送られてきたメールを別のメールアドレスに送信する、といったCGIを作成しています。
メールを標準入力で取得し、Parserを用いて解析を行っているのですが、どうしてもSubjectの取得がうまくいきません。
下記のように入力しています。
my $parser = new MIME::Parser;
$parser->output_to_core(1);
my $entity = $parser->parse(\*STDIN);
$subject = $entity->head->get('Subject');
これを別のメールに送って確認してみると、subject = \x83e\x83L\x83X\x83g\x83\x81\x81[\x83\x8Bといった表示になります。
$subject = decode_mimewords($entity->head->get('Subject'));
といった形も試してみたのですが、結果は同様でした。
Fromのほうは別の処理を用いて正常に表示できたのですが、そちらの処理をSubjectに適用しても結果は上記のようなものでした。
しばらく解決策を検索してみたりしたのですが、解決には至りませんでした。助言のほう、よろしくお願いいたします。
お礼
回答ありがとうございます。なるほど、文字コードでしたか。 早速そちらの正規表現を用いてみたのですが、なぜか変化しませんでした。 参考URLのほうに入力してみると無事日本語化されるのですが・・・ メールを転送する際に、若干本文とタイトルに手を加えてから送りなおしたいので 一度普通の形に直したかったのです。説明不足で申し訳ありません。
補足
別のデコード処理を行ってからこの正規表現を用いて無事表示することができました。 ありがとうございました。