我正在开发一个从数据库获取邮件地址然后向这些地址发送电子邮件的应用程序。在我的脚本中,首先我收到收件人,然后将邮件保存到磁盘中,过了一会儿使用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);