1

我正在开发一个应用程序,它从数据库中获取邮件地址,然后向这些地址发送电子邮件。在我的脚本中,我首先获取收件人,然后将消息保存到磁盘中,一段时间后使用 CRON 发送它们。假脱机目录中的邮件数与收件人数相匹配。问题是某些收件人会收到两次电子邮件。最奇怪的是不是每个人都收到了两次电子邮件,只有 40 个收件人的 700 个。我检查了数据库,看看是否有一些地址重复,但事实并非如此,发送假脱机消息的脚本没有循环,所以我在这里很迷失。你能提供的任何帮助都会很棒。提前致谢。这是我创建消息的代码:

$spool = new Swift_FileSpool(__DIR__."/spool");

// Setup the transport and mailer
$transport = Swift_SpoolTransport::newInstance($spool);


$mailer = Swift_Mailer::newInstance($transport);
$result = array();
foreach($cliente as $cliente){
    $archivo = explode("/", $cliente->pdf);
    $correo = explode(";", $cliente->mail);
    $message = Swift_Message::newInstance($asunto);
    if(is_dir($directorio . "/" . $mes)){
        $prueba[$x] = rename($cliente->pdf, $directorio . "/" . $mes . "/".$archivo[1]);
    }
    else{
        mkdir($directorio . "/" . $mes, 0777);
        chmod($directorio . "/" . $mes, 0777);
        $prueba[$x] = rename($cliente->pdf, $directorio . "/" . $mes . "/" .$archivo[1]);
    }

    $fp=fopen("datos/clientes.txt","a") or die("No se pudo crear el archivo");
    fwrite($fp, "$cliente->nombre,,$cliente->mail,,$cliente->pdf" . PHP_EOL);
    fclose($fp);

    if($prueba[$x]){
        $copiados++;
    }
    else{
        $errorcopiar[] = "No se ha podido cambiar de carpeta la factura correspondiente al cliente " . $cliente->nombre;
    }
    $cuerpo = "this is the message body";
    //Se crea el mensaje sin archivo adjunto.
    if (!$archivosubido){     
        $message->setFrom($origen);
        $message->setReturnPath($returnpath);
        $message->setTo($correo);
        $message->setReplyTo($returnpath);
        $message->setBody($cuerpo, 
                'text/html');
        $message->attach(Swift_Attachment::fromPath($directorio . "/" . $mes . "/" .$archivo[1]));
    }
    //Se crea el mensaje con archivo adjunto.
    else{
        $message->setFrom($origen);
        $message->setReturnPath($returnpath);
        $message->setTo($correo);
        $message->setBody($cuerpo, 
                'text/html');
        $message->attach(Swift_Attachment::fromPath($directorio . "/" . $mes . "/" .$archivo[1]));
        $message->attach(Swift_Attachment::fromPath('subidos/' . $archivosubido));
   }
   //Se envía el mensaje.
    $result[$x] = $mailer->send($message);        
    $x++;
}

这是我发送假脱机消息的代码:

$spool = new Swift_FileSpool(__DIR__."/spool");

$transport = Swift_SpoolTransport::newInstance($spool);

$realtransport = Swift_SmtpTransport::newInstance($servidor,
        25)
        ->setUsername($user)
        ->setPassword($password);

$spool = $transport->getSpool();
$spool->setMessageLimit(10000);
$spool->setTimeLimit(10000);

$sent = $spool->flushQueue($realtransport, $fallos);
4

0 回答 0