• 締切済み

メールを送信しました。と出るのにメールが届きません。

下記のように設定したのですが、どこがいけないのでしょうか? $SENDMAIL = '/usr/sbin/sendmail'; $MAILTO = '<自分のメールアドレス>'; if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } # フォームデータの復元 foreach $pair (split(/&/, $query)) { ($key, $value) = split(/=/, $pair); # 文字のデコード $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $FORM{$key} = $value; } # MIMEエンコード $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($FORM{'name'}); $mail_subject = mimeencode($FORM{'subject'}); # 文字コードの変換 $body = jcode::jis($FORM{'msg'}); # メールヘッダーの生成 $header = <<END; To: $mail_to From: $mail_from<$FORM{'email'}> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/html; charset=ISO-2022-JP END # メールの送信 open(MAILTO, "| $SENDMAIL -i -t -f $FORM{'email'}") or die("エラー:sendmailへのパイプが開けません"); print MAIL "$header, $body"; close MAIL; # サーバー出力 print <<END;

みんなの回答

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1

open(MAILTO, "| $SENDMAIL ~ として、ファイルハンドルがMAILTOなのにその後が print MAIL "$header, $body"; close MAIL; とファイルハンドルがMAILになっているから。 もし↑がここへの単なる誤植だとしたら考えられる理由は以下の通り ・間違いによる宛先不明(To) ・メールサーバーまたはSendmailによる遅延 ・Sendmailがそもそも正しく動いていない ・受け取ったメールサーバー(POPサーバー)が弾いている(DSBL等で) ところで、-tオプションを使ってヘッダ内で指定してるのに-fオプションを使ってFromを指定する必要はないかと。

soyamosa
質問者

補足

openのあとを変えて色々試してみたのですが、できません>< 具体的にはどのように書き換えればいいんでしょうか?

関連するQ&A