2011-07-01 10 views
0

私のPHPのお問い合わせフォームは、受信トレイまたは迷惑メールであればどこにでもメールを送信しません。 PHPは最新版であり、SMTPがインストールされたサーバー上で動作しています。 私はHERESに私のPHPの接触スクリプト...PHPメールが機能しない

それは私のコードやソフトウェアのかどうかわからないよ:私は願っています

<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> 
+0

var_dump(mail($ to、$ subject、$ message、$ headers))を返す必要があります。 – Jage

+0

あなたは 'mail()'に達するまですべてが正常であると確信していますか? – joakimdahlstrom

答えて

0

- $ =「FILTEREDする:

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

と私のフォーム";フィルタリングされた電子メールアドレスを$にすることを意味します。 mail()が失敗した場合は、PHPでエラーが発生するはずです。エラー報告を有効にするか、ログファイルを確認してください。 mail()が失敗していなければPHPの問題はなくなりますので、メールサーバをチェックしてください。また、値がハードコードされたmail()を使用してメールを送信して、メールがなくなったかどうかを確認することもできます。

1

問題がコードまたは外部ソフトウェアに存在するかどうかを確認するには、戻り値mail()を確認してください。

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

falseを返した場合、エラーがスクリプトに含まれているか、メッセージがメールサーバーによって配信されなかったことを示します。

+0

"送信に失敗しました。"メッセージは表示されますが、私のコードには問題はありませんか? –

+0

コードに問題がないことを確認した場合($ to、$件、$メッセージ、および$ヘッダーの値を厳密に調べることによって)、メッセージはメールサーバーによって受け入れられていません。理由を調べるには、サーバーログを調べる必要があります。 –

+0

サーバログにメールの受信や拒否が表示されない場合は、空白です –

0

Fromコロンの後ろにスペースを追加することはできますか?

$headers = "From:" . $from; 

- >

$headers = "From: " . $from; 

しかし、はい、のvar_dump、または(メールをエコー)のいずれか:

echo mail($blah,...); 

1は0が失敗になり、成功を収めています。また

、$には、私は一日あたり200のメッセージの自由な計画をsendgridのようなものを使用して、それを外部委託でしょう

0

...有効なメールアドレスではないようです。 DKIM/SPF(あなたの扱いが簡単ではない)とスケーリングについて心配する必要がないので、メッセージにスパムとしてフラグが立てられないようにします。


0

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