2017-07-02 5 views
-1

最近、Webページを作成し、no-ip.comアドレスのラズベリーパイでホストされているapache2サーバーに投稿して、HTML、js、CSS、 PHPを学ぶための私の最初の本当のプロジェクトは、私にメールを送るための簡単なフォームを作成していますが、mail()関数の問題は何もエラーなく実行し続けますが、メールは実際に送信しません。ここでは、php mail()関数からメールを受信して​​いません

の形式である:ここでは

<form class="" action="/FormTesting/sendMail.php" method="post"> 
    Name:<br><input type="text" name="name" value="" required><br> 
    Email:<br><input type="text" name="email" value="" required><br> 
    Message:<br><textarea name="message" rows="8" cols="80" required></textarea><br> 
    Subject: 
    <input type="radio" name="subject" value="Hello!">Hello! 
    <input type="radio" name="subject" value="Whats up">Whats Up!<br> 
    <input type="submit" name="submit" value="Submit"> 
</form> 

は、フォームの「アクション」属性でのPHPファイルの参照です:

<?php 
if($_SERVER["REQUEST_METHOD"] == "POST") { 
    $to = "[email protected]"; 
    $name = $_POST["name"]; 
    $email = $_POST["email"]; 
    $message = $_POST["message"]; 
    $subject = $_POST["subject"]; 

    echo $name; 
    echo $email; 
    echo $message; 
    echo $subject; 

    $headers = array("From: " . $email, 
"Reply-To: " . $to, 
"X-Mailer: PHP/" . PHP_VERSION); 

    mail($to, $subject, $message, $header); 

} else { 
    echo $_SERVER["REQUEST_METHOD"]; 
} 
?> 

私はこの質問は前に頼まれていることを理解し、私が持っています他の答えによって設定されたメソッドのほとんどを試しましたが、私はまだPHPのmail()関数が動作するように見えません。私が持っている最善の情報は、メールを送信できるようにサーバー自体に何らかのインストールや書式設定を行わなければならないということですが、まだ十分に文書化されているか説明されていません。 (すなわちphpmailerの - まだ...どのように?)

EDIT:

私はメール機能の戻り値をチェックします。 。 。

if(mail("[email protected]", "subject", "message", $headers)) { 
    echo "TRUE"; 
    }else { 
    echo "FALSE"; 
    } 

。 。 。それは虚偽に戻っていることが分かります。私はそれが私のコードのエラーであることを意味すると仮定します。

編集:私はこの質問を投稿する前に調査をしたと述べたとき

は、どうやら私は明確ではありませんでした。とにかく質問したので、私は質問の回答として与えられたすべてを試しました。

+0

あなたは 'mail()'関数の戻り値をチェックしません。それはあなたがすべきではありません。 PHPマニュアルの各関数には戻り値が書かれており、返り値について知り、ほとんどのことを行うためにそれを扱います - http://php.net/mail - あなたの質問を編集し、どの戻り値を期待して返しますかあなたが得た価値。メールの返信が真で、メールを受け取らない場合、これはPHPの範囲外です。 – hakre

+0

戻り値を確認しました。それは偽で、私はそれについて何をすべきかわかりません。 –

+0

これは、電子メールの送信が失敗したことを意味します(直接)。あなたのアプリケーションでそれを扱うようにしてください。これは有効な戻り値です(起こりうる)。残りはトラブルシューティングですが、まずエラーケースでコードを動作させてください。例えば。電子メールの送信が失敗したというメッセージをユーザに表示する。 – hakre

答えて

-2

私は同じスクリプトを試して、電子メールを受け取りました。しかし、それは迷惑メールフォルダに行きました。ヘッダーには詳細が必要です。関数が成功したことを確認するために、メール関数の戻りコードを調べることができます。以下はベストプラクティスです。

  $boundary = "==MP_Bound_xyccr948x=="; 
     $headers = "MIME-Version: 1.0\r\n"; 
     $headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n"; 
     $headers .= "From: OrganizationName <[email protected]>\r\n"; 
     $headers .= "Return-path: [email protected]\r\n"; 


     $message = "This is a Multipart Message in MIME format\n"; 
     $message .= "--$boundary\n"; 
     $message .= "Content-Type: text/plain; charset=\"utf-8\"\n"; 
     $message .= "Content-Transfer-Encoding: 7bit\n\n"; 
     $message .= $user_entered_message . "\n"; 
     $message .= "--$boundary--"; 
     $mailsent = mail($to, $subject, $message, $headers, "[email protected]"); 

     if ($mailsent) 
     { 
     confirmation_msg(); 
     } 
     else 
     { 
     email_error_msg(); 
     } 
+0

私は自分の迷惑メールフォルダを何度もチェックしたことがありませんでした。余分な詳細をヘッダーに追加する前と後の両方で機能しましたか、それとも単にスパムから通常の受信トレイに移動しただけでしたか?また、ヘッダの後のmail()関数の最後のパラメータは何ですか? –

+0

の前に使用されたことは一度も見たことがありません。まあ... @ ZacharyElkins:あなたが投稿したときとちょうど同じコードを実行して、迷惑メールフォルダにメールを入れました。メール機能の最後のパラメータは、送信したメールが返送された場合に通知を受け取ることです。 – alexa0417

関連する問題