У меня есть веб-приложение, которое должно отправлять несколько писем. Прямо сейчас у меня есть адреса электронной почты и пароли, хранящиеся в базе данных MYSQL. Я отобразил их на html-странице, и когда я нажимаю на ссылку, я перенаправляю на php-файл, который отправляет электронное письмо.
Я создал МАССОВЫЕ РАССЫЛКИ вариант, где я должен нажать только одну кнопку, и будет несколько переадресаций со страницы с именем bulk.php на send_mail.php и постепенно отправляет электронные письма для всех элементов в базе данных.
После отправки примерно 15 писем или около того я получаю эту ошибку «localhost перенаправил вас слишком много раз.«
Я должен отправить 30 писем +/- 1 или 2.
Как я могу избавиться от этого?
Спасибо!
Файл bulk.php:
require('connections/conexiune.php');
$sql = "SELECT id, nume, email, parola, temp_trimis FROM firme ORDER BY nume DESC";
$res = $conn->query($sql);
$i=0;
if ($res->num_rows > 0) {
// output data of each row
while($firma = $res->fetch_assoc()){
if($firma["temp_trimis"]==0){
header("Location: send_email.php?nume=".$firma['nume']."&id=".$firma['id']."&email=".$firma['email']."&parola=".$firma['parola']."&blk=1");
}else{
$i++;
}
}
$conn->close();
}
if($i==30) header("Location: index.php");
Файл send_email.php:
$luni = array('Ianuarie', 'Februarie', 'Martie', 'Aprilie', 'Mai', 'Iunie', 'Iulie', 'August', 'Septembrie', 'Octombrie', 'Noiembrie', 'Decembrie');
$luna = date('m');
$luna = strtoupper($luni[(int)$luna-2]) . " " . date('Y');
require('connections/conexiune.php');
require("libs/phpmailer/PHPMailerAutoload.php");
//preluarea de date
if(isset($_GET['nume'],$_GET['email'],$_GET['id'],$_GET['parola'])){
$fields=[
'nume_firma' => $_GET['nume'],
'email' => $_GET['email'],
'id' => $_GET['id'],
'parola' => $_GET['parola'],
];
if(isset($_GET['blk'])){
$blk=$_GET['blk'];
}else{
$blk=0;
}
}//Atasament
foreach (glob("export/*") as $filename) {
$k = strpos($filename, $fields['id']);
if($k == TRUE){
$att=$filename;
}
}
//determinarea hostului(gmail sau yahoo) in functie de email
$detHost=strpos($fields['email'],'gmail');
if($detHost == TRUE){
$host="smtp.gmail.com";
}else{
$host="smtp.mail.yahoo.com";
}
class Mailer extends PHPMailer {
public function copyToFolder() {
$message = $this->MIMEHeader . $this->MIMEBody;
$imapStream = imap_open("{imap.mail.yahoo.com:993/imap/ssl}Sent", $this->Username , $this->Password);
imap_append($imapStream, "{imap.mail.yahoo.com:993/imap/ssl}Sent", $message, "\\Seen");
imap_close($imapStream);
}
}$m = new Mailer();$m -> isSMTP();
$m -> SMTPAuth = true;
$m -> Host = ''.$host.'';
$m -> From = ''.$fields['email'].'';
$m -> FromName = ''.$fields['nume_firma'].'';
$m -> Username = ''.$fields['email'].'';
$m -> Password = ''.$fields['parola'].'';
$m -> SMTPSecure = 'ssl';
$m -> Port = 465;
$m->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$m ->isHTML();
$m -> Subject = 'Raportare sumal luna '.$luna.' pentru '.$fields['nume_firma'].'';
$m -> Body = 'Buna ziua!<p>
Va trimit in atasament raportarea sumal pentru luna '.$luna.' - '.$fields['nume_firma'];
$m -> FromName = 'Aplicatie Raportari Sumal';
$m->addAddress('[email protected]');
//$m->addAddress('[email protected]');
$m->addAttachment(''.$att.'');
//$m->SMTPDebug = 4;
if(!$m->Send())
{
echo "Mesajul nu a fost trimis ! <p>";
echo "Mailer Error: " . $m->ErrorInfo;
exit;
}else{
if($blk==0){
header("Location: index.php");
}else{
header("Location: bulk.php");
}
$sql = "UPDATE firme SET temp_trimis = 1 WHERE id = ".$fields['id']."";
$res = $conn->query($sql);
if($detHost==FALSE)
$m->copyToFolder();
}
И кнопка находится на индексном файле.
<button type="button" class="btn" onclick="location.href='bulk.php'">BULK-MAIL</button>
Задача ещё не решена.
Других решений пока нет …