PHP рассылка массовых писем по одному

Я читаю электронные письма из текстового файла и должен отправлять по одному письму за раз. Все (отправитель, субъект, тело) постоянно, кроме получателя. У меня работает мой почтовый PHP и дополнительный код, который я использую:

<?php
if ($_FILES) {
if ($_FILES['file']['name'] != "") {
if (isset($_FILES) && $_FILES['file']['type'] != 'text/plain') {
echo "<span>File could not be accepted ! Please upload any '*.txt' file.   </span>";
exit();
}

echo "<center><span id='Content'>Contents of ".$_FILES['file']['name']." File</span></center>";
$fileName = $_FILES['file']['tmp_name'];
$file = fopen($fileName,"r") or exit("Unable to open file!");
$string = file_get_contents("$fileName"); // Load text file contents
$pattern = '/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $string, $matches);
$output = var_export($matches[0]);

foreach ($output as $item) {
echo "$item\n";
$output = $item;
}

print_r($output);
} else {
if (isset($_FILES) && $_FILES['file']['type'] == '') {
echo "<span>Please Choose a file by click on 'Browse' or 'Choose File' button.</span>";
}
}
}
?>

1

Решение

Вы можете назначить нескольким получателям одно сообщение и установить для SingleTo значение true.

$recipient_addresses = array();
....
$message = new \PHPMailer;
$message->SingleTo = true;
....
foreach($recipient_addresses as $email) $message->addAddress($email);
....

Обратите внимание, что SingleTo поддерживается только в транспортах «mail» и «sendmail», а не в «SMTP».

Если вы используете транспорт SMTP, просто зациклите отправку для каждого адреса по одному. Просто вызовите $ message-> addAddress один раз, чтобы передать только один адрес для каждого экземпляра класса PHPMailer, но создайте несколько экземпляров, один за другим:

1. $message = new \PHPMailer;
2. $message->addAddress($email);
3. fill other data, but don't set the SingleTo property value, keep it default (false).
4. $message->send();
5. unset($message);

Также обратите внимание на тот факт, что SingleTo планируется объявить устаревшим в выпуске PHPMailer 6.0 и удалить в 7.0.

0

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

Других решений пока нет …

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