-1

これの何が問題なの..

メッセージをメールに送信しようとしていますが、受信者がメッセージを受信しません。コードの何が問題になっていますか? または何か提案はありますか?助けてください:

ここに私のコードがあります:

<?php

if(isset($_POST['subject'], $_POST['sender'], $_POST['receiver'], $_POST['body']))        {
    //Validate Subject
        if(empty($_POST['subject'])) {
            $errors[] = "Please enter a subject";
        } else{
            $subject = htmlentities($_POST['subject']);
        }

    //Validate Sender Email
        if(empty($_POST['sender'])) {
            $errors[] = "Please enter a valid eMail Address";
        } else if(strlen($_POST['sender']) > 347) {
            $errors[] = "Email is too long. Please provide a valid email address";
        } else if(filter_var($_POST['sender'], FILTER_VALIDATE_EMAIL) ===  false) {
            $errors[] = "Please provide a valid eMail address";
        }else{
            $email = "<" .htmlentities($_POST['sender']). ">";
        }

    //Validate Receiver's Email
        if(empty($_POST['receiver'])) {
            $errors[] = "Please enter a valid eMail Address";
        } else if(strlen($_POST['receiver']) > 347) {
            $errors[] = "Your email is too long. Please provide a valid email address";
        } else if(filter_var($_POST['receiver'], FILTER_VALIDATE_EMAIL) === false) {
            $errors[] = "Please provide a valid eMail address";
        }else{
            $to = "<" .htmlentities($_POST['receiver']). ">";
        }

    //Validate the Message
        if(empty($_POST['body'])) {
            $errors[] = "Please enter a message.";
        } else {
            $body = htmlentities($_POST['body']);
        }
        }

?>
<!DOCTYPE HTML>
<html>
<head>
    <title>Mail Test</title>
</head>
<body>
    <?php
    if(empty($errors) === false) {
    ?>
        <ul>
            <?php
                foreach($errors as $error) {
                    echo "<li>", $error, "</li>";
                }
            ?>
        </ul>
    <?php
    } else {
        if (isset($to, $subject, $body, $email)){
        mail($to, $subject, $body, "From: ($email)");
        echo "Message sent!";
        }
    }
    ?>
    <form method="post" action="">
        <label for="subject"> Subject: </label>
            <input type="text" id="subject" name="subject" /><br/>

        <label for="sender"> Your eMail: </label>
            <input type="text" id="sender" name="sender" /> <br/>

        <label for="receiver"> Receiver: </label>
            <input type="text" id="receiver" name="receiver" /> <br/>

        <label for="body"> Message: </label>
            <textarea id="body" name="body" cols="100" rows="20">  </textarea> <br/>
            <input type="submit" value="Send Email" />
</body>
</html>
4

1 に答える 1

2

インインを削除()します($email)mail($to, $subject, $body, "From: ($email)");

次のように読みます。

mail($to, $subject, $body, "From: $email");

そしてそれは今働くでしょう。(テスト済み)

私が最初に()around$emailでテストしたとき、それは Spam で終わりましたunknown sender

次に、括弧を削除すると、送信者の電子メールアドレスとともに受信トレイに届きました。

于 2013-09-14T14:50:28.427 に答える