Почтовая форма PHP с несколькими получателями & amp; различное содержание: иногда не получено

Я хочу отправить онлайн-форму на два адреса.
Содержание письма должно быть разным для каждого получателя.
Одно письмо для дальнейшей обработки (с паролем), а другое — как личная копия (без пароля).

Эта проблема:

Созданная мной веб-форма работает в основном, но некоторые пользователи сообщили, что они не получили личную копию. Я не мог воспроизвести ошибку еще. (См. Обновление ниже) Теперь у меня есть опасение, что иногда он не отправляет электронные письма на другой адрес.
Я думаю, что это как-то связано с логикой обработки почты (process.php) …

Как я могу избежать этого странного поведения? Я сделал ошибку кодирования? Есть ли какие-то исправления, которые нужно сделать?

Большое спасибо за вашу помощь!

Вот пример кода:

<?php
$to =  $_POST['email'];
$to2 =  '[email protected]';
$from = $_POST['email'];
$subject = 'Webform for' . $_POST['firstname'] . ' ' . $_POST['lastname'];
$email = $_POST['email'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$password = $_POST['password'];
$comment = $_POST['comment'];

$headers   = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=utf-8";
$headers[] = "From: {$email}";
$headers[] = "X-Mailer: PHP/".phpversion();

$message1 = "Hello $firstname $lastname, \n
here is your personal copy of the web form: \n
Name:       $firstname $lastname
Comment:    $comment \n
Bye, Admin";

$message2 = "Name:       $firstname $lastname
Password:   $password
Comment:    $comment";

$success = mail($to, $subject, $message1,implode("\r\n",$headers), '[email protected]');       // Personal copy
$success = mail($to2, $subject, $message2,implode("\r\n",$headers), '[email protected]');  // Further processing

if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=form.php#success\">";
}
?>

ОБНОВИТЬ [11-24-2015]: я воспроизвел ошибку один раз (случается очень редко).
Отсутствующее электронное письмо не фильтруется как спам и не отображается нигде.
Решение пока не найдено.

0

Решение

Ваш код кажется в порядке.

Электронная почта может быть заблокирована некоторыми провайдерами, которые считают ее спамом.

Не так просто правильно отправить электронное письмо …

0

Другие решения

Создать logger, которые регистрируют адреса электронной почты, которые были успешно отправлены по почте.

Вы можете либо создать текстовый файл и написать все адреса электронной почты на успех от mail или используйте одну таблицу базы данных, чтобы обновить ее.

$success = mail($to2, $subject, $message2,implode("\r\n",$headers), '[email protected]');

if ($success) {
// <write the email address to a file OR update to database>
print "<meta http-equiv=\"refresh\" content=\"0;URL=form.php#success\">";
}

Кроме того, вы назначаете $success дважды. Исправьте ваш код, как показано ниже.

$success1 = mail($to, $subject, $message1,implode("\r\n",$headers), '[email protected]');       // Personal copy
$success2 = mail($to2, $subject, $message2,implode("\r\n",$headers), '[email protected]');  // Further processing

if ($success1 && $success2){
print "<meta http-equiv=\"refresh\" content=\"0;URL=form.php#success\">";
}
0

По вопросам рекламы [email protected]