電子書籍の厳選無料作品が豊富!

いつもお世話になります。
PerlでSendmail送信プログラムは何回か作ったことが有るのですが、いつもと同じように作っているつもりにも関わらず、送信されたメール本文の1~2行目に

Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP

が表示されます。

コードは$mailtoや$mail_from、$mail_subjectなどをMIMEエンコードしてから下記の様なコードでメールヘッダーを作成し

$header = <<END;
To: $mailto
Bcc:$mail
From: $mail_from<$mail>
Subject: $mail_subject
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP

END

#メールの本文を下記のように作成
$body = <<END;
メール本文
END

$mbody=jcode::jis($body);

#Sendmailで送信する。
open(MAIL, "| $SENDMAIL -i -t -f $mail") or die("ERROR: exec sendmail.");
print MAIL $header, $mbody;
close MAIL;

というコード-です。
なにが原因かおわかりの方宜しくお願いします。

A 回答 (1件)

がると申します。


直接的には「$mail_subjectの値がおかしい」ことが予想されます。もっと厳密に発言すると「$mail_subjectという変数に格納されている値の最後に改行コードがある」のが問題です。
一度、
open(MAIL, "| $SENDMAIL -i -t -f $mail") or die("ERROR: exec sendmail.");
print MAIL $header, $mbody;
close MAIL;
の部分を
# open(MAIL, "| $SENDMAIL -i -t -f $mail") or die("ERROR: exec sendmail.");
# print MAIL $header, $mbody;
print $header, $mbody;
# close MAIL;
として、その標準出力をチェックしてみてください。
後は「一番初めに出てきた"1カラム目の改行"がヘッダとボディとを切り分けるサイン」である、という知識があると、状況がつかめるかと思います。
    • good
    • 0
この回答へのお礼

おぉ!・・・おぉ!・・・おっしゃるとおり改行でした。
なんとまぁ・・・(@o@)/
ありがとうございました。

お礼日時:2006/08/28 16:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!