Как я могу добавить адрес электронной почты От в форму PHP? - PullRequest
0 голосов
/ 07 февраля 2011

Мой почтовый процессор работает ... но как я могу получить адрес электронной почты От, чтобы отображаться вместо "myhost"? Я получаю anonymous@q0.xxxxxxxxxxxxx.com. Поэтому, когда кто-то заполняет форму, я хочу, чтобы его адрес электронной почты был адресом ответа.

<?php
if(!$_POST) exit;

$email = $_POST['email'];

//$error[] = preg_match('/\b[A-Z0-9._%-]+@[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 = "myemail@somehost";
    $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!';
}
}
?>

Ответы [ 4 ]

1 голос
/ 08 февраля 2011

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

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

, который добавляет ВСЕ ваши данные POST в массив $ values и ваш генератор контента должен выглядеть так

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
}

надеюсь, я правильно понял ваш вопрос oO

1 голос
/ 08 февраля 2011

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

$emailHeader = "From: theSender@yourdomain.com" . "\r\n" . "Reply-To: theSender@yourdomain.com" . "\r\n";
// add the header argument to mail function
mail($your_email,$email_subject,$email_content,$emailHeader);

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

1 голос
/ 07 февраля 2011

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

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

Тогда при вызове команды mail используйте это:

mail($your_email,$email_subject,$email_content,$headers);
0 голосов
/ 07 февраля 2011

Эй.Кстати, из того, что я вижу здесь,

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...