0

私はウェブサイトを作成しており、PHPで連絡フォームを作成していました。ページ自体にはエラーは表示されませんが、電子メールが受信トレイや電子メールのスパム フォルダに表示されることはありません。私が持っているコードは次のとおりです。

        $_NAME = $_POST["name"];
        $_EMAIL = $_POST["reply"];
        $_SUBJECT = $_POST["subject"];
        $_MESSAGE = $_POST["message"];

        $_MAILTO = "myemail@gmail.com";
        $_SUBJECT = "Contact Form";
        $_FORMCONTENT = "From: ".$_NAME." Subject: ".$_SUBJECT." Message: ".$_MESSAGE;
        $_MAILHEADER = "Reply To: ".$_EMAIL;

        mail($_MAILTO, $_SUBJECT, $_FORMCONTENT, $_MAILHEADER);

問題は何ですか?

編集 -

HTMLフォームは次のとおりです。

<form id="contact" name="contact" action="contact2.php" method="post">
                <input type="text" class="name" name="name" id="name" placeholder="Your name (optional)" onfocus="placeholder=''" onblur="placeholder='Your name (optional)'" /><br><br>
                <input type="text" class="reply" id="reply" name="reply" placeholder="Your email (optional)" onfocus="placeholder=''" onblur="placeholder='Your email (optional)'" /><br><br>
                <input type="text" class="subject" id="subject" name="subject" placeholder="Subject" onfocus="placeholder=''" onblur="placeholder='Subject'" /><br><br>
                <textarea class="message" id="message" name="message" rows="10" cols="50" placeholder="Enter your message" onfocus="placeholder=''" onblur="placeholder='Enter your message'"></textarea><br><br>
                <input type="submit" class="send" id="send" name="send" value="Send Message" />
            </form>
4

2 に答える 2

0

簡単な例:

<?php

// Has the form been submitted?
if (isset($_POST['send'])) {
    // Set some variables
    $required_fields = array('name', 'email'); // add fields as needed
    $errors = array();

    $success_message = "Congrats! Your message has been sent successfully!";
    $sendmail_error_message = "Oops! Something has gone wrong, please try later.";

    // Cool the form has been submitted! Let's loop 
    // through the required fields and check
    // if they meet our condition(s)
    foreach ($required_fields as $fieldName) {
        // If the current field in the loop is NOT part of the form submission -OR-
        // if the current field in the loop is empty
        if (!isset($_POST[$fieldName]) || empty($_POST[$fieldName])) {

            // add a reference to the errors array, indicating that these conditions have failed
            $errors[$fieldName] = "The {$fieldName} is required!";
        }
    }

    // Proceed if there aren't any errors
    if (empty($errors)) {
        // add fields as needed
        $name = htmlspecialchars(trim($_POST['name']), ENT_QUOTES, 'UTF-8' );
        $email = htmlspecialchars(trim($_POST['email']), ENT_QUOTES, 'UTF-8' );

        // Email receivers
        $to_emails = "anonymous1@example.com, anonymous2@example.com";

        $subject = 'Contact form sent from ' . $name;
        $message = "From: {$name}";
        $message .= "Email: {$email}";

        $headers = "From: {$name}\r\n";
        $headers .= "Reply-To: {$email}\r\n";
        $headers .= 'X-Mailer: PHP/' . phpversion();

        if (mail($to_emails, $subject, $message, $headers)) {
            echo $success_message;
        } else {
            echo $sendmail_error_message;
        }
    } else {

        foreach($errors as $invalid_field_msg) {
            echo "<p>{$invalid_field_msg}</p>";
        }
    }
}
于 2013-02-03T00:49:14.713 に答える
0

最初のステップは、mail 関数の戻り値をチェックして、(PHP/mail 関数が確認できる限り) メールが正常に送信されたかどうかを確認することです。

$mail_result = mail($_MAILTO, $_SUBJECT, $_FORMCONTENT, $_MAILHEADER);
if ($mail_result) {
    echo <<<HTML
<div>Mail was successfully sent!</div>
HTML;
} else {
    echo <<<HTML
<div>Sending mail failed!</div>
HTML;
}

次に、すべての適切な設定が php.ini ファイルで正しく設定されていることを確認する必要があります。具体的には、sendmail_path 設定です。PHP Manual の公式ドキュメントを必ず確認してください。

最後の手段として、別のメール送信方法を検討することをお勧めします。

于 2013-02-03T00:42:53.973 に答える