Ошибка доставки почты: возвращение сообщения отправителю - PullRequest
3 голосов
/ 03 августа 2011

Я хотел бы добавить сообщение о неудачном перенаправлении в мой почтовый скрипт, чтобы, если пользователь вводит неправильный адрес в поле электронной почты, он возвращался мне, а не в почтовый ящик моей хостинговой компании, как мне это сделать? тот? Я уже добавил return-path, но он не работает, что еще я могу сделать, чтобы этот код работал.

Вот код:

<?php if(isset($_POST['submit'])) { 
if(trim($_POST['first-name']) == '') {
    $hasError = true;
} else {
    $name = trim($_POST['first-name']);
}

//Check to make sure that the last name field is not empty
if(trim($_POST['last-name']) == '') {
    $hasError = true;
} else {
    $lname = trim($_POST['last-name']);
}

//Check to make sure sure that a valid email address is submitted
if(trim($_POST['email']) == '')  {
    $hasError = true;
} else if(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", trim($_POST['email']))) {
    $hasError = true;
    } else {
    $email = trim($_POST['email']);
}

//Check to make sure that the phone field is not empty
if(trim($_POST['tel']) == '') {
    $hasError = true;
} else {
    $phone = trim($_POST['tel']);
}

//Check to make sure that the phone field is not empty
if(trim($_POST['company']) == '') {
    $hasError = true;
} else {
    $company = trim($_POST['company']);
}



foreach (array($_POST['q1'])  as  $value)  {
 $q1 = $value[0];
 $q2 = $value[1];
 $q3 = $value[2];
}



//If there is no error, send the email
if(!isset($hasError)) {

    $to = 'me@host.com';
    $recipient = $email;


    $subject = 'Subject';

    $headers = "From: Me\n" . $to . "\r\n";
    $headers .= "Reply-To: ". $to . "\r\n";
    $headers .= "Return-Path: ". $to . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

    $msg1 = "First Message";


    $msg2 = "Second Message";

    //Send Email
    mail($recipient, $subject, $msg2, $headers);
    mail($to, $subject, $msg1, $headers);

    $emailSent = true;
    }
}
?>

1 Ответ

2 голосов
/ 03 августа 2011

обратный путь устанавливается mta в зависимости от отправителя конверта, вы не можете просто установить это в заголовках самостоятельно. Вы можете попытаться установить отправителя конверта, используя аргумент $ extra_parameters функции mail. См. Пример № 3 на http://www.php.net/manual/en/function.mail.php

В вашем случае это будет что-то вроде

mail($recipient, $subject, $msg2, $headers, "-f $to");

В некоторых системах переопределение отправителя конверта с помощью -f ограничено. В этом случае вам, вероятно, придется переключиться на отправку почты через SMTP вместо вызова двоичного файла sendmail через mail ().

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