• ベストアンサー

sendmailのFROMに日本語を使う

CGIからsedmailを呼び出してメールを送信しています。 その時に差出人の部分の日本語が文字化けしてしまいます。 そこで&jcode'convertでjisに変えたのですが、今度は CGIがサーバーエラーになってしまいます。 どうすればよいでしょうか。 スクリプトはこんな感じです。 ----------------------------------------------- $from = '両国'; $subject = 'テスト'; &jcode'convert(*from, 'jis'); &jcode'convert(*subject, 'jis'); &jcode'convert(*msg, 'jis'); $errno = 1 unless open(MAIL, "| /usr/lib/sendmail -t"); return 0 if $errno; print MAIL "To: $MailTo\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain;\n\n"; print MAIL "$msg\n"; $errno = 2 unless close(MAIL); return 0 if $errno;

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

  • ベストアンサー
  • slackware
  • ベストアンサー率59% (22/37)
回答No.1

解決できるような回答ではありませんが. メールのヘッダに日本語を書くことは、基本的には できません. JISコードに変換後、、MIME(Base64)でエンコードして から送付しないとダメです.(RFC2045,RFC2047) jcode.pl でなく、jcode.pm には、 MIMEエンコードの機能が付いています. http://openlab.ring.gr.jp/Jcode/index-j.html 他にも、MIME 関係のモジュールを利用する手もあります. (MIME::Base64 など)

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm#JP_Base64
ryogoku
質問者

お礼

素早いご回答ありがとうございました! どうやら送れそうです。頑張ってみます。 ありがとうございました。

その他の回答 (1)

回答No.2

To: や From: には、ASCII文字の一部しか使えません。しかも、そ の構造も規定されているので、いわゆる xxx@yyy という形のアド レスを含まないプレーンなテキストだけでは指定できないはずです。 可能な形式は、 xxx@yyy か、 phrase <xxx@yyy> で、(text) という括弧入りのコメントを適当な位置に置けます。 phrase とか text の部分に日本語を入れたいときには、MIMEエン コードする必要があります。

参考URL:
http://www3.cds.ne.jp/~marimo/data/rfc/rfc2047-jp.txt
ryogoku
質問者

お礼

ご回答ありがとうございました! 入れた覚えのないメールアドレスがFROMにくっついて くるのはそのせいだからなのですね。 すっきりしました。ありがとうございました!