0

私の PHP コンタクト フォームは、受信トレイであろうとスパムであろうと、私のメールをどこにも送信しません。PHP は最新版であり、SMTP がインストールされているサーバー上で実行されています。それが私のコードなのかソフトウェアなのかわかりません...

私のphp連絡先スクリプトは次のとおりです。

    <?php
$to = "FILTERED";
$subject = $_POST['subject'];
$message = $_POST['message'] ." From: " .$_POST['email'];
$from =    "contactform@contact.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
?>

そして私のフォーム:

<form method='post' action='contactscript.php'>
  Email: <input name='email' type='text' /><br />
  Subject: <input name='subject' type='text' /><br />
  Message:<br />
  <textarea name='message' rows='15' cols='40'>
  </textarea><br />
  <input type='submit' />
  </form>
4

5 に答える 5

1

問題がコードにあるのか外部ソフトウェアにあるのかを判断するには、 の戻り値を確認してくださいmail()

if ( mail($to,$subject,$message,$headers) ) {
    echo "Message was sent";
}
else {
    echo "Sending failed.";
}

false が返される場合は、スクリプトにエラーがあるか、メール サーバーがメッセージの配信を受け入れませんでした。

于 2011-07-01T18:12:49.790 に答える
0

sendgridのようなものを使用して、1 日あたり 200 メッセージの無料プランで外部委託します。DKIM / SPFを使用しているため(自分で処理するのはそれほど簡単ではありません)、スケーリングについて心配する必要がないため、メッセージがスパムとしてフラグ付けされないようにします。


于 2011-07-01T18:37:44.447 に答える
0

私は願っています - $to = "FILTERED"; フィルターされたメールアドレスを $to に入れていることを意味します。mail() が失敗した場合、PHP でエラーが発生するはずです。エラー報告を有効にするか、ログ ファイルを確認してください。mail() が失敗しない場合は、PHP の問題ではありません。メール サーバーを確認する必要があります。ハードコーディングされた値で mail() を使用してメールを送信して、メールが送信されるかどうかを確認することもできます。

于 2011-07-01T18:12:42.363 に答える
0

Fromコロンの後にスペースを追加してください。

$headers = "From:" . $from; 

->

$headers = "From: " . $from;

しかし、はい、var_dump か、mail() をエコーアウトします。

echo mail($blah,...);

1 は成功、0 は失敗です。

また、$to は有効なメール アドレスではないようです。

于 2011-07-01T18:13:29.217 に答える
0

これは params と config 変数で変更できますが、php mail() はデフォルトで sendmail を使用します。標準の場所にインストールされておらず、別の方法を使用するように明示的に構成していない場合、mail() は失敗します。

于 2011-07-01T18:53:36.380 に答える