2014-11-18 5 views
0

이 웹 페이지 부분에이 코드가 있지만 정상적으로 작동하지 않습니다.PHP 코드가 전자 메일을 보내지 않음

<?php 

if(isset($_POST['email'])) { 




$email_to = "[email protected]"; 

$email_subject = "Your email subject line"; 





function died($error) { 

    // your error code can go here 

    echo "We are very sorry, but there were error(s) found with the form you submitted. "; 

    echo "These errors appear below.<br /><br />"; 

    echo $error."<br /><br />"; 

    echo "Please go back and fix these errors.<br /><br />"; 

    die(); 

     } 



// validation expected data exists 

if(!isset($_POST['first_name']) || 

    !isset($_POST['last_name']) || 

    !isset($_POST['email']) || 

    !isset($_POST['comments'])) { 

    died('We are sorry, but there appears to be a problem with the form you submitted.');  

     } 



$first_name = $_POST['first_name']; // required 

$last_name = $_POST['last_name']; // required 

$email_from = $_POST['email']; // required 

$comments = $_POST['comments']; // required 



$error_message = ""; 

$email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 

    if(!preg_match($email_exp,$email_from)) { 

$error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 

     } 

$string_exp = "/^[A-Za-z .'-]+$/"; 

if(!preg_match($string_exp,$first_name)) { 

$error_message .= 'The First Name you entered does not appear to be valid.<br />'; 

    } 

    if(!preg_match($string_exp,$last_name)) { 

$error_message .= 'The Last Name you entered does not appear to be valid.<br />'; 

    } 

    if(strlen($comments) < 2) { 

$error_message .= 'The Comments you entered do not appear to be valid.<br />'; 

     } 

    if(strlen($error_message) > 0) { 

died($error_message); 

    } 

$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 .= "First Name: ".clean_string($first_name)."\n"; 

$email_message .= "Last Name: ".clean_string($last_name)."\n"; 

$email_message .= "Email: ".clean_string($email_from)."\n"; 

$email_message .= "Comments: ".clean_string($comments)."\n"; 





// create email headers 

    $headers = 'From: '.$email_from."\r\n". 

    'Reply-To: '.$email_from."\r\n" . 

    'X-Mailer: PHP/' . phpversion(); 

    @mail($email_to, $email_subject, $email_message, $headers); 



    ?> 

주어진 전자 메일로 전자 메일을 보내야합니다. 또한 전자 메일을 보내고 "보낸 메시지"를 표시 한 후 필드를 명확하게 표시하려고합니다. 도와주세요!

오류 보고서를 추가 한 후에 아무런 변화가 없습니다. mail()

<form name="contactform" method="post" action="send_form_email.php"> 

           <p> 
            <input type="text" name="first_name" maxlength="50" size="30" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required wpcf7-use-title-as-watermark" title="First name"> 
           </p> 
           <p> 
            <input type="text" name="last_name" maxlength="50" size="30" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required wpcf7-use-title-as-watermark" title="Last name"> 
           </p> 
           <p> 
            <input type="text" name="email" maxlength="80" size="30" class="wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email wpcf7-use-title-as-watermark" title="E-mail"> 
           </p> 
           <p> 
            <textarea name="comments" maxlength="1000" cols="25" rows="6" class="wpcf7-form-control wpcf7-textarea wpcf7-use-title-as-watermark" title="Write your message here.."></textarea> 
           </p> 

           <input type="submit" value="Submit" class="wpcf7-form-control"> 
           <div class="wpcf7-response-output wpcf7-display-none"></div> 


          </form> 
+1

'mail()'에서'@'기호를 제거하는 것으로 시작하십시오. 잠재적 인 [** 오류 **] (http://php.net/manual/en/function.error-reporting.php)를 숨기고 있습니다. 아마 당신이 확인하지 않는 것. –

+0

@ Fred-ii- 여전히 작동하지 않습니다. – slimito

+1

코드 실행은 "이메일"설정에 달려 있습니다. 클릭 한 링크를 확인하여 오류보고를 추가하십시오. –

답변

1

당신은 닫는 중괄호 }을 놓치고 :

@mail($email_to, $email_subject, $email_message, $headers); 

?> 

가 그것을 수정 :

@mail($email_to, $email_subject, $email_message, $headers); 

} 

?> 

error reporting 세트를 갖는, 보여 주었다한다 여기 내 HTML 양식입니다 너 같은 무언가 :

Parse error: syntax error, unexpected end of file in /path/to/your/send_form_email.php on line 134

오류를 찾는 데 도움이되는 파일 상단에 오류보고를 추가하십시오.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

(!) 참고 : 오류보고는 생산을 결코 준비에서 수행하지 않으며,해야합니다.

+0

고맙습니다. 이제는 전자 메일을 보내고 있습니다. 메시지 상자를 보여주고 필드를 지우도록 도와 주시겠습니까? – slimito

+0

반갑습니다. 그것은 완전히 새로운 질문이며이를 위해 JS가 필요할 것입니다. 내 대답 옆에있는 체크 표시를 선택하여 대답을 수락 할 수 있습니다. JS는 코딩의 장점이 아닙니다. "php ajax"를 찾을 수 있습니다. @ user3787300 –

+0

JS를 알고 있습니다. 나는 내가 추가해야 할 것을 정확히 알고있다, 나는 그것을 어디에 추가해야하는지 모른다. – slimito

관련 문제