2011-02-07 1 views
0

Мой процессор электронной почты работает ... но как я могу получить адрес электронной почты от имени вместо «myhost»? Я получаю [email protected] Итак, когда кто-то заполняет форму, я хочу, чтобы его адрес электронной почты был адресом ответа.Как добавить адрес электронной почты в форму PHP?

<?php 
if(!$_POST) exit; 

$email = $_POST['email']; 

//$error[] = preg_match('/\b[A-Z0-9._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS'; 
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email)){ 
    $error.="Invalid email address entered"; 
    $errors=1; 
} 
if($errors==1) echo $error; 
else{ 
    $values = array ('name','email','telephone','company','message'); 
    $required = array('name','email','telephone','message'); 

    $your_email = "[email protected]"; 
    $email_subject = "New Message: ".$_POST['subject']; 
    $email_content = "new message:\n"; 

    foreach($values as $key => $value){ 
     if(in_array($value,$required)){ 
      if ($key != 'subject' && $key != 'company') { if(empty($_POST[$value])) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; } 
     } 
     $email_content .= $value.': '.$_POST[$value]."\n"; 
    } 
} 

if(@mail($your_email,$email_subject,$email_content)) { 
    echo 'Message sent!'; 
} else { 
    echo 'ERROR!'; 
} 
} 
?> 
+0

не использую Ерег, его амортизацию. –

ответ

1

Добавьте к этому файлу:

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

Затем, когда вы вызовите команду использовать почтовый это:

mail($your_email,$email_subject,$email_content,$headers); 
+0

Когда я добавляю больше элементов: $ values ​​= array ('name', 'email', 'phone', 'company', 'message'); - Они не отображаются в письме по получении. Как мне их показать? Когда я добавляю их в: $ required = array ('name', 'email', 'phone', 'message'); они работают ... но они тогда необходимы, прежде чем отправлять ... любые идеи ??? – sean

0

Эй. Только кстати: от того, что я вижу здесь,

 if ($key != 'subject' && $key != 'company') { if(empty($_POST[$value])) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; } 

не имеет смысла. Ваши ключи всегда будут: 0 для подсчета ($ values) ... у вас нет ассоциативного массива. или это массив $values только для тестирования?

+0

У меня есть работающая форма. Я не могу добавить лишние поля, если они не требуются - в чем проблема? Я не могу сделать все поля обязательными, как мне это изменить? – sean

1

По умолчанию электронное письмо, отправленное функцией PHP [mail()], используется как отправитель вашего сервера. Чтобы изменить отправителя, вы должны изменить заголовок сообщения электронной почты. Вы можете сделать это следующим образом:

$emailHeader = "From: [email protected]" . "\r\n" . "Reply-To: [email protected]" . "\r\n"; 
// add the header argument to mail function 
mail($your_email,$email_subject,$email_content,$emailHeader); 

Обратите внимание, что мы добавили четвертый аргумент функции почты.

1

хорошо ... я бы сказал, что обирать всю $values = array.... линии и заменить это с

$values = array(); 
foreach($_POST as $k => $v) if(strtolower($k) != 'submit') $values[$k] = htmlspecialchars($v); 

, что добавить и все данные POST в $ значений массива и ваш генератор контента должен выглядеть следующим образом

foreach($values as $key => $value){ 
    if(in_array($key,$required) && trim($value)==''){ 
     echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; 
    } 
    $email_content .= $key.': '.$value."\n"; // makes more sense 
} 

надежды я получил свой вопрос прямо öö

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