• 締切済み

sendmail実行時のエラー

受け渡されたパラメーターをセットしてsendmailを実行すると「Premature end of script headers:」というエラーになります。 試しにパラメーターを直セットしてsendmailすると、文字化けはしますが送信はされました。 メールでなく、ファイルに出力してみたところ、 From: " =?ISO-2022-JP?B?GyRCJDUkRiQ1JEYbKEI=?= "<xxxx@xxxx.ne.jp> Subject: =?ISO-2022-JP?B?GyRCIXo7cU5BQEE1YRsoQg==?= この2つだけが文字化けしていて、本文は大丈夫でした。 ソースは以下の通りです。 require './jcode.pl'; # MIMEエンコードライブラリを使う $mimew = './mimew.pl'; ・・・・・略 # MIMEエンコード if (-e $mimew) { require $mimew; $subject = &mimeencode($mail_sub); $from = &mimeencode("From: \"$in{'cname'}\" <$in{'mail'}>"); } else { $subject = $mail_sub; &jcode'convert(*subject,'jis'); $from = "From: $in{'mail'}"; } ・・・・パラメータのコンバート&jcode'convert(データ, 'jis'); ・・・・メール本文($mail_body)のセット $err = 0; open(MAIL,"| $sendmail -t") || $err = 1; print MAIL "To: $mailto\n"; print MAIL $from, "\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n"; print MAIL "Content-Transfer-Encoding: 7bit\n\n"; print MAIL "$mail_body\n"; close(MAIL); 文字化けもですが、まずはエラーを解消するにはどうしたらいいでしょうか。教えて下さい。お願いします。

みんなの回答

  • t140
  • ベストアンサー率39% (59/150)
回答No.1

From: " =?ISO-2022-JP?B?GyRCJDUkRiQ1JEYbKEI=?= Subject: =?ISO-2022-JP?B?GyRCIXo7cU5BQEE1YRsoQg==?= これは文字化けではなく、正しくBASE64エンコードされて います。 日本語が送信者や件名に含まれる場合にJISコードをBASE64 にエンコードして送信することで文字化け(先頭ビットの 欠落)を防ぐ仕組みです。 で、「Premature end of script headers:」というエラー に関してですが、Web上からのメール送信などで処理後に 表示されるページがない可能性が考えられます。 「Content-Type: text/html\n\n」のようなヘッダと 「メール送信完了!」みたいなページ内容が無いとか・・・

arisa5
質問者

お礼

お答えいただき、ありがとうございます。 とことんいじくりまわしていたら、なぜか送信できるようになりました。 正直なところ、原因が何なのか分かっていませんが。 前の状態でもエンコードは正常だったのですね。ありがとうございました。