Как получить результат отправки электронной почты по протоколу SMTP? - PullRequest
0 голосов
/ 24 июня 2019

все, Я работаю над системой электронной почты для отправки писем по протоколу SMTP с PHP, все идет хорошо, и теперь я могу отправлять сообщения без проблем, у меня проблемы с буксировкой На самом деле, и я надеюсь, что найду решение, 1 - Я отправляю электронную почту пользователям, использующим библиотеку phpmailer, но не могу контролировать и получить результат отправки электронной почты, потому что я отправляю около 10 писем за одно соединение SMTP. это мой код отправки

 $mail = new PHPMailer;
 $froms=$respu['froms'];    
 $mail->Timeout = 3600;    
     $mail->SMTPDebug = 2;                            // Enable verbose debug output
    $mail->isSMTP();                                 // Set mailer to use SMTP
    $mail->Host = $respu['server'];                              // Specify main and backup SMTP servers
    $mail->SMTPAuth = $respu['authentication'];                    // Enable SMTP authentication
    $mail->Username = $respu['username'];                    // SMTP username
    $mail->Password = $respu['password'];                         // SMTP password
    $mail->SMTPSecure = $respu['security'];                    // Enable TLS encryption, `ssl` also accepted
    $mail->Port = $respu['port'];                             // TCP port to connect to
$mail->SetFrom($respu['username'],$froms);  
$mail->AddAddress($to);



    $mail->Subject = $subject;
    $mail->MsgHTML($message);



    if(!$mail->Send()) {
        //$errors=$mail->getSMTPInstance()->getError();
        $date=date('Y-m-d h:i');
        echo  $msg= "Message Not  Sent: to $to " . $mail->ErrorInfo;
        $date=date('Y-m-d h:i');

        $sql="insert into log (log_text,user_email,log_time,status)values ('$msg','$to','$date',0) ";
     $this->query_return($sql);
        exit();
    } else {$date=date('Y-m-d h:i');


         $sql="insert into log (log_text,user_email,log_time,status)values ( 'Message Sent Successfully ','$to','$date',1) ";
 $this->query_return($sql);
    }

условие if (! $ Mail-> Send ()) каждый раз возвращает true, даже если адрес электронной почты неверен. Это работает, как проверить, установлено ли SMTP-соединение или нет, я хочу знать, получено ли письмо пользователями или нет.

моя вторая проблема в том, что у меня более 3000 почтовых адресов, и я хочу отправлять им электронные письма одновременно, что происходит, если процедура занимает много времени, и мне приходится долго ждать, чтобы завершить ее Как я могу сделать это быстрее.

1 Ответ

0 голосов
/ 24 июня 2019

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

Для максимальной производительности вы хотите отправлять на локальный или близлежащий почтовый сервер, который затем берет на себя ответственность за дальнейшую доставку.Некоторые сообщения могут быть не доставлены, в этом случае вам нужно будет полагаться на обработчики отказов;если сообщение не отправляется, оно будет возвращено на адрес Return-path, которым вы можете управлять, установив свойство Sender в PHPMailer (по умолчанию оно использует ваш адрес From).Обратите внимание, что как отправитель вы должны никогда устанавливать заголовок return-path самостоятельно;это работа принимающего сервера.

Будьте осторожны: обработка отказов очень неприятна;поскольку обычные сообщения отказов довольно «невидимы», это означает, что они чрезвычайно переменные по качеству.Например, для некоторых серверов Microsoft Exchange возможно отклонение адреса, по которому сообщение было отклонено!Вы можете справиться с этим сценарием (и многими другими недостатками плохо настроенных почтовых серверов), используя VERP-адресацию , чтобы помочь вам идентифицировать оригинальные адреса получателей или даже отдельные сообщения.Как бы вы ни занимались этим, вы должны очень хорошо общаться с вашим почтовым сервером.Использование внешнего сервиса для обработки таких посылок не обязательно лучше, поскольку они сталкиваются с точно такими же проблемами, хотя, по крайней мере, они могут иметь дело с большой неприятностью обработки отказов.

К вашему сведению, я запускаю https://smartmessages.net, сервис электронного маркетинга;он построен на PHPMailer (отчасти поэтому я и сопровождающий), и мы можем отправлять со скоростью около 300 сообщений в секунду (используя очень хороший почтовый сервер), поэтому приличная пропускная способность вполне возможна с PHPMailer.

...