2012-12-06 3 views
1

Моя контактная форма исходит от TEST - как показано ниже, но мне нужно, чтобы она была получена от человека, заполнившего форму, чтобы после получения ответа на электронную почту на введенный адрес, а не на ТЕСТ.Веб-форма с аутентификацией Smtp (ответ-ответ)

Я новичок в PHP, возможно, я попрошу помочь с реализацией ответа на вопрос? Я пробовал и что-то упускаю.

Это мой первоначальный код. Спасибо!

<?php 
if(isset($_POST['email'])) { 

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['contact_name']) || 
!isset($_POST['email']) || 
!isset($_POST['telephone']) || 
!isset($_POST['comments'])) { 
died('We are sorry, but there appears to be a problem with the form you submitted.'); 
} 

$contact_name = $_POST['contact_name']; // required 
$email_from = $_POST['email']; // required 
$telephone = $_POST['telephone']; // required 
$comments = $_POST['comments']; // not 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 0-9.'-]+$/"; 
    if(!preg_match($string_exp,$contact_name)) { 
$error_message .= 'The Contact Name you entered does not appear to be valid.<br />'; 
    } 
    if(!preg_match($string_exp,$telephone)) { 
$error_message .= 'The Telephone # you entered does 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 .= "Contact Name: ".clean_string($contact_name)."\n"; 
$email_message .= "Email: ".clean_string($email_from)."\n"; 
$email_message .= "Telephone: ".clean_string($telephone)."\n"; 
$email_message .= "Comments: ".clean_string($comments)."\n"; 

ini_set('display_errors',1); 
error_reporting(E_ALL); 

    require_once "Mail.php"; 

$from = "TEST<[email protected]>"; 
$to = "<[email protected]>"; 
$subject = "Test message"; 
$body = "$email_message"; 

$host = "mail.xxxxxxxx.com"; 
$username = "[email protected]"; 
$password = "xxxxxxxxxx"; 

headers = array ('From' => $from, 
'To' => $to, 
'Subject' => $subject); 
$smtp = Mail::factory('smtp', 
    array ('host' => $host, 
'auth' => true, 
'username' => $username, 
'password' => $password)); 

$mail = $smtp->send($to, $headers, $body); 

if (PEAR::isError($mail)) { 
    echo("<p>" . $mail->getMessage() . "</p>"); 
} else { 
    echo("<p></p>"); 
} 
?> 


<!-- include your own success html here --> 
message sent 

<?php 
} 
?> 

ответ

0

Try:

$from = $_POST['contact_name']; 

Или, если вы хотите, чтобы появиться их электронная почта:

$from = $_POST['email']; 
+0

Спасибо. но этот $ from должен быть от адреса TEST из-за аутентификации SMTP. Вот почему я должен установить Reply-To, но из-за отсутствия знаний PHP я не могу правильно его запрограммировать. Я справляюсь и ища помощь в реализации ответа. – user1881380

Смежные вопросы