2014-07-20 4 views
1

유효성 확인서 양식이 작동하지 않습니다. 내가 양식을 제출하려고하는 동안 다음과 같은 오류가 발생합니다유효성 검사 양식이 작동하지 않습니다.

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in E:\CMS_Site\wamp\www\sitename\contents\send_mail.php on line 53

<?php 
require_once 'mandrill-api-php/src/Mandrill.php'; //Not required with Composer 
$mandrill = new Mandrill('eWTy3pUA1Okb-4lwUtk4dg'); 
if(isset($_POST['name']) != NULL && isset($_POST['email']) != NULL && isset($_POST['message']) != NULL) 
{ // if(isset($_POST['submit_form']) != NULL) IF START 
$name = strtoupper (trim($_POST['name'])); 
$address = trim($_POST['address']); 
$email = strtolower(trim($_POST['email'])); 
$contact = trim($_POST['contact']); 
$country = trim($_POST['country']); 
$website = trim($_POST['website']); 
$subject = trim($_POST['subject']); 
$message = trim($_POST['message']); 
//--------------------------------------------- 
error_reporting(E_ALL^E_NOTICE); 
$my_email = "[email protected]"; 
$errors = array(); 
// Remove $_COOKIE elements from $_REQUEST. 
if(count($_COOKIE)){foreach(array_keys($_COOKIE) as $value){unset($_REQUEST[$value]);}} 
// Validate email field. 
if(isset($_REQUEST['email']) && !empty($_REQUEST['email'])) 
{ 
$_REQUEST['email'] = trim($_REQUEST['email']); 
if(substr_count($_REQUEST['email'],"@") != 1 || stristr($_REQUEST['email']," ") || stristr($_REQUEST['email'],"\\") || stristr($_REQUEST['email'],":")){$errors[] = "Email address is invalid";}else{$exploded_email = explode("@",$_REQUEST['email']);if(empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])){$errors[] = "Email address is invalid";}else{if(substr_count($exploded_email[1],".") == 0){$errors[] = "Email address is invalid";}else{$exploded_domain = explode(".",$exploded_email[1]);if(in_array("",$exploded_domain)){$errors[] = "Email address is invalid";}else{foreach($exploded_domain as $value){if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}}}}} 
} 
// Check referrer is from same site. 
if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))){$errors[] = "You must enable referrer logging to use the form";} 
// Check for a blank form. 
function recursive_array_check_blank($element_value) 
{ 
global $set; 
if(!is_array($element_value)){if(!empty($element_value)){$set = 1;}} 
else 
{ 
foreach($element_value as $value){if($set){break;} recursive_array_check_blank($value);} 
} 
} 
recursive_array_check_blank($_REQUEST); 
if(!$set){$errors[] = "You cannot send a blank form";} 
unset($set); 
// Display any errors and exit if errors exist. 
if(count($errors)){foreach($errors as $value){print "$value<br>";} exit;} 
if(!defined("PHP_EOL")){define("PHP_EOL", strtoupper(substr(PHP_OS,0,3) == "WIN") ? "\r\n" : "\n");} 
// Build message. 
function build_message($request_input){if(!isset($message_output)){$message_output ="";}if(!is_array($request_input)){$message_output = $request_input;}else{foreach($request_input as $key => $value){if(!empty($value)){if(!is_numeric($key)){$message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;}else{$message_output .= build_message($value).", ";}}}}return rtrim($message_output,", ");} 
$message = build_message($_REQUEST); 
$message = $message . PHP_EOL.PHP_EOL."-- ".PHP_EOL."The Message has been submitted successfully "; 
$message = stripslashes($message); 
$subject = stripslashes($subject); 
if($email) 
{ 
$headers = "From: {$name} <{$_REQUEST['email']}>"; 
$headers .= PHP_EOL; 
$headers .= "Reply-To: " . $_REQUEST['email']; 
} 
else 
{ 
if(isset($_REQUEST['name']) && !empty($_REQUEST['name'])){$from_name = stripslashes($_REQUEST['name']);} 
$headers = "From: {$name} <{$_REQUEST['email']}>"; 
} 
mail($my_email,$subject,$message,$headers); 
?> 
<b>Thank you <?php if(isset($_REQUEST['name'])){print stripslashes($_REQUEST['name']);} ?></b> 
<?php 
//--------------------------------------------- 
} 
else 
{ 
?> 
<script type="text/javascript"> 
function validate_mail() 
{ 
var mail_name=document.mail_form.name.value; 
var mail_email=document.mail_form.email.value; 
var mail_contact=document.mail_form.contact.value; 
var mail_message=document.mail_form.message.value; 
var mail_subject=document.mail_form.subject.value; 
var spaceRegxp = /\w+/; 
var emailRegxp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/; 
var contactRegxp = /^\d+$/; 
if (spaceRegxp.test(mail_name) != true){ 

     alert("PLEASE CHECK NAME"); 
        document.mail_form.name.focus(); 
        return false;} 
if (emailRegxp.test(mail_email) != true){ 

     alert("PLEASE CHECK EMAIL"); 
        document.mail_form.email.focus(); 
        return false;}      
if (contactRegxp.test(mail_contact) != true){ 
     alert("PLEASE CHECK CONTACT NUMBER"); 
        document.mail_form.contact.focus(); 
        return false;} 
if (spaceRegxp.test(mail_subject) != true){ 
     alert("PLEASE CHECK Subject"); 
        document.mail_form.subject.focus(); 
        return false;} 
if (spaceRegxp.test(mail_message) != true){ 
     alert("PLEASE CHECK MESSAGE"); 
        document.mail_form.message.focus(); 
        return false;} 
else { 
document.mail_form.action = 'index.php?t=contact&i=25'; 
document.mail_form.btn_submit.disabled=1; 
document.mail_form.btn_submit.value = '  PLEASE WAIT ... '; 
document.mail_form.submit(); 
} 
} 
</script> 
<form name = "mail_form" method="post" enctype="multipart/form-data"> 
<div><label for="name"> Full Name: </label> <input name="name" type="text" size="50" /> </div> 
<div><label for="address"> Address: </label> <input name="address" type="text" size="50" /></div> 
<div><label for="email"> Email: </label><input name="email" type="text" size="50" /></div> 
<div><label for="contact">Contact:</label> <input name="contact" type="text" size="50" /></div> 
<div><label for="country">Country:</label> <input name="country" type="text" size="50" /> </div> 
<div><label for="website">Website:</label> <input name="website" type="text" size="50" /> </div> 
<div><label for="subject">Subject:</label> <input name="subject" type="text" size="50" /> </div> 
<div><label for="message">Your Message:</label> 
<textarea name="message" cols="40" rows="8"></textarea> 
</div> 
<div> <p>  <input type="Button" name="btn_submit" id="submit-go" value="  Send Mail  " onClick="validate_mail()"/> </p> 
</div> 
</form> 
<?php 
} 
?> 
+0

오류 자체에서 신속한 파일을 다운로드 할 수 있습니다 코드에서 불필요한 라인의 일부 ..
을 제거 자기 설명이다. php.ini 파일에서 SMTP 메일 서비스를 구성해야합니다. –

+0

아니 그녀는 다운로드하고'SwiftMailer'을 포함해야합니다 – Yang

답변

2

. Windows에서 WAMP를 사용하는 경우 SMTP 서버 설정이 없습니다. 따라서 WAMP에서 메일을 보내야하는 경우 SMTP 서버 지원을 사용해야합니다. Mandrill Mailchimb를 사용하여 localhost에서 이메일을 보내려면 a/c를 작성하고 신속한 파일을 다운로드 한 다음 작업 디렉토리에 설정을 추가하십시오 메일 읽기 더 server.To 코드는 아래를 참조 드릴 통해 메일을 보내는 방법에 ... 당신은 SMTP 설정을 지원하는 라이브 서버에이 코드를 사용할 수 있습니다

또는

.
코드에서 Mandrill Swift 파일을 통해 메일 보내기. 메시지 제목 등을 자신의 것으로 변경할 수 있습니다.

#

<?php 
    if(isset($_POST['name']) != NULL && isset($_POST['email']) != NULL && isset($_POST['message']) != NULL){ 
     $name = strtoupper (trim($_POST['name'])); 
     $address = trim($_POST['address']); 
     $email = strtolower(trim($_POST['email'])); 
     $contact = trim($_POST['contact']); 
     $country = trim($_POST['country']); 
     $website = trim($_POST['website']); 
     $subject = trim($_POST['subject']); 
     $message = trim($_POST['message']); 
     //--------------------------------------------- 
     error_reporting(E_ALL^E_NOTICE); 
     $my_email = "[email protected]"; 
     $errors = array(); 
     // Remove $_COOKIE elements from $_REQUEST. 
     if(count($_COOKIE)){foreach(array_keys($_COOKIE) as $value){unset($_REQUEST[$value]);}} 
     // Validate email field. 
     if(isset($_REQUEST['email']) && !empty($_REQUEST['email'])){ 
      $_REQUEST['email'] = trim($_REQUEST['email']); 
      if(substr_count($_REQUEST['email'],"@") != 1 || stristr($_REQUEST['email']," ") || stristr($_REQUEST['email'],"\\") || stristr($_REQUEST['email'],":")){ 
       $errors[] = "Email address is invalid"; 
      } 
      else{ 
       $exploded_email = explode("@",$_REQUEST['email']); 
       if(empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])){ 
        $errors[] = "Email address is invalid"; 
       } 
       else{ 
        if(substr_count($exploded_email[1],".") == 0){ 
         $errors[] = "Email address is invalid"; 
        } 
        else{ 
         $exploded_domain = explode(".",$exploded_email[1]); 
         if(in_array("",$exploded_domain)){ 
          $errors[] = "Email address is invalid"; 
         } 
         else{ 
          foreach($exploded_domain as $value){ 
           if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)){ 
            $errors[] = "Email address is invalid"; 
            break; 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
     // Check referrer is from same site. 
     if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))){ 
      $errors[] = "You must enable referrer logging to use the form"; 
     } 
     // Check for a blank form. 
     function recursive_array_check_blank($element_value){ 
      global $set; 
      if(!is_array($element_value)){ 
       if(!empty($element_value)){ 
        $set = 1; 
       } 
      } 
      else{ 
       foreach($element_value as $value){ 
        if($set){ 
         break; 
        } 
        recursive_array_check_blank($value); 
       } 
      } 
     } 
     recursive_array_check_blank($_REQUEST); 
     if(!$set){ 
      $errors[] = "You cannot send a blank form"; 
     } 
     unset($set); 
     // Display any errors and exit if errors exist. 
     if(count($errors)){ 
      foreach($errors as $value){ 
       print "$value<br>"; 
      } 
      exit; 
     } 
     if(!defined("PHP_EOL")){ 
      define("PHP_EOL", strtoupper(substr(PHP_OS,0,3) == "WIN") ? "\r\n" : "\n"); 
     } 
     // Build message. 
     function build_message($request_input){ 
      if(!isset($message_output)){ 
       $message_output =""; 
      } 
      if(!is_array($request_input)){ 
       $message_output = $request_input; 
      } 
      else{ 
       foreach($request_input as $key => $value){ 
        if(!empty($value)){ 
         if(!is_numeric($key)){ 
          $message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL; 
         } 
         else{ 
          $message_output .= build_message($value).", "; 
         } 
        } 
       } 
      } 
      return rtrim($message_output,", "); 
     } 
     $message = build_message($_REQUEST); 
     $message = $message . PHP_EOL.PHP_EOL."-- ".PHP_EOL."The Message has been submitted successfully "; 
     $message = stripslashes($message); 
     $subject = stripslashes($subject); 
     if($email){ 
      $headers = "From: {$name} <{$_REQUEST['email']}>"; 
      $headers .= PHP_EOL; 
      $headers .= "Reply-To: " . $_REQUEST['email']; 
     } 
     else{ 
      if(isset($_REQUEST['name']) && !empty($_REQUEST['name'])){ 
       $from_name = stripslashes($_REQUEST['name']); 
      } 
      $headers = "From: {$name} <{$_REQUEST['email']}>"; 
     } 
     include_once "swift/lib/swift_required.php"; 
     $from = array("[email protected]" => "Your Name"); 
     $to="[email protected]"; 
     $message = "Hello -This is a test mail"; 
     $subject = "Subject – Test"; 
     $transport = Swift_SmtpTransport::newInstance('smtp.mandrillapp.com', 587); 
     $transport->setUsername('[email protected]'); 
     $transport->setPassword('eWTy3pUA1Okb-4lwUtk4dg'); 
     $swift = Swift_Mailer::newInstance($transport); 
     sleep(2); 
     $html = "" . $message . ""; 
     $maildetails = new Swift_Message($subject); 
     $maildetails->setFrom($from); 
     $maildetails->setBody($html, 'text/html'); 
     $maildetails->setTo($to); 
     $maildetails->addPart($message, 'text/plain'); 

     if ($recipients = $swift->send($maildetails, $failures)) { 
      echo 'Message successfully sent!'; 
     } else { 
      echo "There was an error:n"; 
      //print_r($failures); 
     } 
     //mail($my_email,$subject,$message,$headers); 
    ?> 
    <b>Thank you <?php if(isset($_REQUEST['name'])){print stripslashes($_REQUEST['name']);} ?></b> 
    <?php 
    } 
    else{ 
     ?> 
     <form name = "mail_form" method="post" action ="send_mail.php"enctype="multipart/form-data"> 
      <div><label for="name"> Full Name: </label> <input name="name" type="text" size="50" /> </div> 
      <div><label for="address"> Address: </label> <input name="address" type="text" size="50" /></div> 
      <div><label for="email"> Email: </label><input name="email" type="email" size="50" /></div> 
      <div><label for="contact">Contact:</label> <input name="contact" type="text" size="50" /></div> 
      <div><label for="country">Country:</label> <input name="country" type="text" size="50" /> </div> 
      <div><label for="website">Website:</label> <input name="website" type="text" size="50" /> </div> 
      <div><label for="subject">Subject:</label> <input name="subject" type="text" size="50" /> </div> 
      <div><label for="message">Your Message:</label> 
      <textarea name="message" cols="40" rows="8"></textarea> 
      </div> 
      <div><p><input type="submit" name="btn_submit" id="submit-go" value="Send Mail"/></p></div> 
     </form> 
    <?php 
    } 
    ?> 

send_mail.php 난 그냥 당신은 http://ajesh.co.in/downloads/swift.zip

+0

맨드릴 신속한 파일을 다운로드하는 방법? – Jklyn

+0

@Jklyn : 맨드릴에 대해 자세히 배우고 다운로드하려면 https://www.mandrill.com/을 방문하십시오. 그것도 보통 스팸 메일을 피하십시오. –

+0

@Jklyn은 문서 및 다운로드를 여기에서보십시오 :: https://mandrillapp.com/api/docs/index.php.html 당신은 그들의 웹에 a/c를 창조 할 필요가 있습니다, 그 후에 당신 만이 user_name과 Mandrill 키를 얻을 것이고, 메일 보내기 코드 안에 포함시켜야합니다. –

0

WAMP는 SMTP 서버가 없습니다.

설명

은 당신이 보내는 전자 메일 서버를 필요로 이메일을 보낼 수 있도록. 대부분의 리눅스 시스템에는 기본적으로 하나가 존재하며 PHP는 여러분이 설치 한 메일 전송 에이전트에 메일을 보내기위한 리눅스 애플리케이션 인 sendmail을 사용합니다.

PHP에서 메일을 보낼 수 있으려면 보내는 메일 서버가 있어야하며 PHP에 주소와 포트를 알려줘야합니다. 이것은 php.ini에서 SMTP 및 smtp_port 설정을 사용하여 수행됩니다. 해당 컴퓨터에서 메일 서버를 설정하지 않으면 실패합니다.

예를 들어, ISP에서 나가는 메일 서버를 제공하면 주소와 포트 번호를 사용할 수 있습니다. 또는 메일을 보내려는 사람이라면 로컬 컴퓨터 나 로컬 네트워크의 누군가에게 자신의 메일 서버를 설치해야합니다.

소스 PHP를 통해 메일을 보내기위한 귀하의 코드는 전혀 문제가 없습니다 Why mail() PHP function does not work with WAMP default installation?

관련 문제