• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perl でメール送信プログラム。)

Perlでメール送信プログラムの文字化け問題について

このQ&Aのポイント
  • Perlで作成したメール送信プログラムで、自宅環境からのテストでは正常に送信できますが、会社の環境では文字化けが発生してしまいます。
  • 自宅環境ではYahoo!やBiglobeのメールアドレス宛に送信できる一方、会社環境では自社で構築したqmailのメールサーバに送信しようとしています。
  • 送信するメールの内容には日本語の文字コードiso-2022-jpが使用されており、特に「あいうえお」の部分が文字化けして表示されます。解決策をご教示いただける方はいらっしゃいますか?

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

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.4

subject は、ISO-2022-JP に変換した上で base64 でエンコードしましょう。 参考 : http://perltips.twinkle.cc/perl/encode_jis_subject.php 本文も ISO-2022-JP に変換するのが無難です。 $StringBuffer に入っている本文の文字コードは何でしょうか。 EUC-JP だとすると $smtp->datasend(encode('ISO-2022-JP', decode('EUC-JP', $StringBuffer))); となるのかな。 参考 : http://hikoboshi.org/perl/doc/encode.html

den256
質問者

お礼

ありがとうございます! うまくいきました! やっぱり、基本が理解できてないとだめですね。。。。 勉強になりました!

その他の回答 (3)

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.3

文字化けが起きるのは、Subjectの部分だけではないですか?

den256
質問者

補足

本文のほうの文字化けが主です。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.2
den256
質問者

お礼

$smtp->mail($mailaddress); $smtp->to($mailaddress); $date = &date; $smtp->data(); $smtp->datasend("Date:$date\n"); $smtp->datasend("From:$mailaddress\n"); $smtp->datasend("To:$mailaddress\n"); $smtp->datasend("Subject:Software制作依頼\n"); $smtp->datasend("Content-Transfer-Encoding: 7bit\n"); $smtp->datasend("Content-Type: text/plain;charset=\"euc-jp\"\n\n"); $smtp->datasend("\n"); $smtp->datasend(encode("euc-jp", $StringBuffer)."\n"); $smtp->dataend(); $smtp->quit; コードをこんな感じに直しましたが、文字化けしてしまいます。 あいうえお →  ???臓単?総蔵丹?総蔵・?臓俗?B こんな感じです。

den256
質問者

補足

Linux の文字コードの設定は、EUC-JP でした。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

Subjectの文字コードに関する資料を探したら良いよ。 簡単に言うと会社のサーバ(sendmailかな?)は他と違う文字コードが基準で駆動してるだけ。

den256
質問者

補足

会社のメールサーバは、qmail のようです。 サーバは、Linux なのですが、基準の文字コードの調べ方はわかりますか?

関連するQ&A