1

このメールフォームに問題があります。PHP エラー コードなどはありません。メールは配信されません。このコード サンプル全体は、私のサイトのいくつかのページに含まれているファイルです。フォームは、フォームが表示されているページに送信され、機能しますが、メールが送信されない理由がわかりません。電子メールを送信するコードを含むelseステートメントを処理していないようです。

<div class="green_box" id="contact_us">
<h3>CONTACT US</h3>
<div class="white_box">

<?php
if ($_POST['submitted']==1) {  
    $errormsg = ""; //Initialize errors  
    if ($_POST[your_name]){  
        $your_name = $_POST[your_name]; 
    }  
    else {  
        $errormsg = "You did not enter your Name";  
    }  
    if ($_POST[your_email]){  
        $your_email = $_POST[your_email];
    }  
    else {  
        if ($errormsg){ //If there is already an error, add next error  
            $errormsg = $errormsg . " or your Email";  
        }else{  
            $errormsg = "You did not enter your Email";  
        }  
    }
    if ($_POST[your_message]){  
        $your_message = $_POST[your_message];
    }  
    else {  
        if ($errormsg){ //If there is already an error, add next error  
            $errormsg = $errormsg . " or your Message";  
        }else{  
            $errormsg = "You did not enter your Message"; 
        }  
    }
    if (strlen($errormsg) > 1) {
        echo "<p><strong>" . $errormsg . ".</strong><br>Please try again.</p>";
    }
    else {
        $email_to = "willyfresh@gmail.com"; // recipient inbox
        $email_subject = "Fore A Partners Website Contact Form";
        $email_message = "Form details below.\n\n";

        function clean_string($string) {
          $bad = array("content-type","bcc:","to:","cc:","href");
          return str_replace($bad,"",$string);
        }

        $email_message .= "Name: ".clean_string($your_name)."\n";
        $email_message .= "Email: ".clean_string($your_email)."\n";
        $email_message .= "Comments: ".clean_string($your_message)."\n";

        $headers = 'From: '.$your_email."\r\n".
        'Reply-To: '.$your_email."\r\n" .
        'X-Mailer: PHP/' . phpversion();
        @mail($email_to, $email_subject, $email_message, $headers);  
        echo "<p>Thank you for contacting us. We will be in touch with you very soon.</p>";
    }
}
?>

<form name="contactform" method="post">
<p>Name<br><input type="text" name="your_name" maxlength="80" size="45"></p>
<p>Email<br><input type="text" name="your_email" maxlength="80"  size="45"></p>
<p>Message<br><textarea name="your_message" maxlength="1000" rows="6" cols="30"></textarea></p>
<input type="hidden" name="submitted" value="1">
<p><input type="image" src="../btn_submit.png" alt="Submit" name="submit"></p>
</form>
</div>
</div>
4

1 に答える 1

1

アップデート

正常に動作しない場合、いくつかの理由が考えられます。どのタイプのサーバーで実行していますか? php.ini で SMTP プロパティを構成する必要があるかもしれませんが、詳細を知らずに何とも言えません。

私は個人的に PEAR メール ソリューションを好みます。より堅牢で、SMTP 情報を簡単に構成できます。私はあなたのコードを整理し、私のために働くサンプルの PEAR メール スクリプトを実装しました。ほとんどの場合、PEAR メールは既にインストールされていますが、ダウンロードしてインストールする必要がある場合は、http: //pear.php.net/package/Mail/downloadにアクセスしてください。

<?php
if ($_POST) {
    if ($_POST['submitted']==1) {  
        $errormsg = ""; //Initialize errors  
        if ($_POST['your_name']){  
            $your_name = $_POST['your_name']; 
        }  
        else {  
            $errormsg = "You did not enter your Name";  
        }  
        if ($_POST['your_email']){  
            $your_email = $_POST['your_email'];
        }  
        else {  
            if ($errormsg){ //If there is already an error, add next error  
                $errormsg = $errormsg . " or your Email";  
            }else{  
                $errormsg = "You did not enter your Email";  
            }  
        }
        if ($_POST['your_message']){  
            $your_message = $_POST['your_message'];
        }  
        else {  
            if ($errormsg){ //If there is already an error, add next error  
                $errormsg = $errormsg . " or your Message";  
            }else{  
                $errormsg = "You did not enter your Message"; 
            }  
        }
        if (strlen($errormsg) > 1) {
            echo "<p><strong>" . $errormsg . ".</strong><br>Please try again.</p>";
        }
        else {
             // recipient inbox
            $email_subject = "Fore A Partners Website Contact Form";
            $email_message = "Form details below.\n\n";

            function clean_string($string) {
              $bad = array("content-type","bcc:","to:","cc:","href");
              return str_replace($bad,"",$string);
            }

            $email_message .= "Name: ".clean_string($your_name)."\n";
            $email_message .= "Email: ".clean_string($your_email)."\n";
            $email_message .= "Comments: ".clean_string($your_message)."\n";            

            // INCLUDE PEAR MAIL
            require_once "Mail.php";
            require_once('Mail\mime.php');

            // CONFIGURE SMTP SETTINGS
            $email_to = "willyfresh@gmail.com";
            $sender = "emailfrom@example.com";
            $host = "mail.example.com";
            $username = "emailfrom@example.com";
            $password = "password";

            $crlf = "\n";       
            $headers = array(
                'From' => $sender,
                'To' => $email_to,
                'Reply-To' => $your_email,
                'Subject' => $email_subject
            );  
            // Creating the Mime message
            $mime = new Mail_mime($crlf);   
            // Setting the body of the email
            $mime->setTXTBody($your_message);
            $mime->setHTMLBody($your_message);  
            $body = $mime->get();
            $headers = $mime->headers($headers);    
            // Sending the email
            $mail =& Mail::factory('smtp',
            array ('host' => $host,
                'auth' => true,
                'username' => $username,
                'password' => $password
            ));
            $mail->send($email_to,$headers,$body);

            echo "<p>Thank you for contacting us. We will be in touch with you very soon.</p>";
        }
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div class="green_box" id="contact_us">
<h3>CONTACT US</h3>
<div class="white_box">
<form name="contactform" method="post">
<p>Name<br><input type="text" name="your_name" maxlength="80" size="45"></p>
<p>Email<br><input type="text" name="your_email" maxlength="80"  size="45"></p>
<p>Message<br><textarea name="your_message" maxlength="1000" rows="6" cols="30"></textarea></p>
<input type="hidden" name="submitted" value="1">
<p><input type="image" src="../btn_submit.png" alt="Submit" name="submit"></p>
</form>
</div>
</div>
</body>
</html>

最初に目にしたのは、$_POST[your_name] ではなく $_POST['your_name'] のように投稿を取得する必要があることです。

于 2012-10-18T01:26:11.950 に答える