Как обрабатывать сотни получателей с помощью phpmailer - PullRequest
0 голосов
/ 30 мая 2019

Уже есть много вопросов по этому поводу, но ответы, которые я нашел, не ясны или противоречивы, в то время как проблема, даже если она изложена во многих отношениях, кажется ИМХО общей (и у меня тоже).

Когда у вас есть сотни или тысячи получателей для вашей электронной почты (обычно с вложениями), какой лучший способ следовать?

Я использую AddBcc (см. Мой код выше), но я встречал многопроблемы в течение года, так как многие получатели находят почту в спаме, многие просто не получают ее (или так говорят), у многих возникают проблемы с вложениями и т. д.

Здесь кажется, что в предложении используется одно электронное письмо с таким же количеством AddBcc, что и получателей, но здесь мы видим, что «SMTP RFC (RFC 5321) не накладывает никаких ограничений на длину поля BCC, хотя некоторые интернет-провайдеры могут ограничивать егонамеренно предотвратить спам ".и мы находим предложение отправить одно письмо для получателя.

С другой стороны здесь мы находим, что «Я почти уверен, что это на самом деле встроено в протокол электронной почты, что вы не можетеобнаружить успешные. В противном случае эта информация может быть использована злонамеренно для обнаружения адресов электронной почты в целях рассылки спама. ", так что я могу сделать, чтобы каждый получил свою электронную почту?

Более того, здесь мы видим, что кто-то настоятельно рекомендует одно электронное письмо для получателя, указывая на статью вики PHPmailer по отправке в списки , в которой говорится (среди прочего): «Если отправляемые вами сообщения абсолютно идентичны, вы можете добавить всеадресаты используют addBCC (), что означает, что вам нужно всего лишь отправить () одно сообщение, хотя большинство почтовых серверов будут иметь ограничение на количество адресов, которые вы можете отправлять за один раз. "

Итак, еслитеоретического ограничения на количество скрытой копии не существует, но «некоторые« почтовые серверы »могут« иметь ограничение на это количество, и мы даже не можем знать,Что мне делать, если какое письмо пришло, а какое нет, ориентируясь на надежность?

<?php
    // database connection and session init
    require 'main.php';

  //mailer init
 require 'phpmailer/PHPMailerAutoload.php';
  $mail = new PHPMailer;
  $mail->setFrom('myadd@mysite.gov.it');
//query
  $q="SELECT email FROM ".$genitori_table.",".$users_table." WHERE cf_g is not null";
  $q=$q." AND ".$users_table.".id_g1=".$genitori_table.".id AND ".$users_table.".stato=1";

  while($row = $retval->fetch_array()){
      echo $row['email'];
      $mail->AddBCC($row['email']);
      //$mail->addAddress($row['email']);
  }
  $mail->isHTML(true);

  $mail->Subject = 'my subject';
  $mail->Body    = 'my body';
  $mail->AltBody = 'my alt body.';


  $mail->AddAttachment('LetteraAiGenitori.pdf','lettera');
  $mail->AddAttachment('AutorizzazioneUscitaAutonomaAlunni.pdf');

  if(!$mail->send()) {
      echo 'Message could not be sent.';
      echo 'Mailer Error: ' . $mail->ErrorInfo;
  } else {
      echo 'Message has been sent';
  }
?>
...