Tengo un problema, necesito enviar un email desde un formulario, que a veces va con adjunto y a veces sin el. Cuando son pocas direcciones el codigo funciona perfectamente. Pero la tabla definitiva, que tiene unas 400 direcciones, da error 500 Internal... aunque los envia bien.
Necesito que me diga qué direcciones no se han enviado, por lo que hago el envio uno por uno. Creo que el error lo da al mostrar el resultado, porque los emails llegan a sus destinatarios (por lo menos a los que he preguntado aleatoriamente, y al mio que pongo siempre el ultimo).
El codigo es el siguiente:
Código HTML:
<form method="post" action="indice.php?p=<?php echo $_GET['p']?>" enctype="multipart/form-data"> <input type="hidden" name="enviar" value="si"> <p>Asunto: <label for="asunto" > <input type="text" name="asunto" size="84" /></label></p> <p>Adjuntar Archivo: <label for="archivo" > <input type="file" name="archivo" id="archivo" size="68" /></label></p> <p>Contenido: </p> <textarea name="contenido" ><?php echo trim($contenido)?></textarea> <p ><input type="submit" class="boton boton_input" value="Enviar Email"></p> </form>
Código PHP:
if ($_POST['enviar']=='si')
{ $asunto=$_POST['asunto'];
$contenido=nl2br($_POST['contenido']);
require "includes/class.phpmailer.php";
$mail = new phpmailer();
$mail->PluginDir = "includes/";
$mail->Mailer = "smtp";
$mail->Host = "smtp.xxxxxxxxxxx";
$mail->SMTPAuth = true;
$mail->Username = "xxxxxxxxxxx";
$mail->Password = "xxxxxxxxxxx";
$mail->From = "[email protected]";
$mail->FromName = "";
$mail->Subject = $asunto;
$img_url= 'imagenes/cabecera_galeria.jpg';
$mail->AddEmbeddedImage($img_url, 'cabecera', 'cabecera_galeria.jpg');
$archivo=$_FILES['archivo']['tmp_name'];
$archivo_name=$_FILES['archivo']['name'];
if ($achivo !="none")
$mail->AddAttachment($archivo,$archivo_name);
$mail->Body = "<style>
body{ font:13px Arial, Helvetica, sans-serif; color:#000; background-color:#F3ECD3; text-align:center; }
td{ font:13px Arial, Helvetica, sans-serif; }
h1{ font-size:15px; color:#0B3A06; border-bottom:solid 1px #F3ECD3; margin:15px }
.borde{ border:solid 1px #67B5B2; }
.contenedor{ border:double #0B3A06;background:#fff; }
hr{ width:90%; margin:auto;}
p{text-align:justify; margin: 5px 15px;}
p.nota{ font-size:11px;}
</style>
<table width='600' align='center' cellspacing='0' cellpadding='0' class='contenedor'>
<tr><td align='center'><img src='cid:cabecera' /></td></tr>
<tr><td align='center' colspan='2'>
<h1>$asunto</h1>
<p style='text-align:justify;margin:25px 35px'>$contenido</p> </td></tr>
</table>";
$mail->AltBody = "$asunto\n\n
".strip_tags($contenido)."\n\n";
$mail->Timeout=120;
$enviados="";
$sql="SELECT * from emails_txt where email<>''";
$result = mysql_query($sql,$link) or die(mysql_error());
$num = mysql_num_rows($result);
$x=0;
$enviados="";
while ($x<$num)
{
$email= mysql_result($result,$x,"email");
$mail->AddAddress($email);
$exito = $mail->Send();
$intentos=1;
while((!$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){
sleep(5);
//echo $mail->ErrorInfo;
$exito = $mail->Send();
$intentos=$intentos+1;
}
if ($mail->ErrorInfo=="SMTP Error: Data not accepted") {
$exito=true;
}
if(!$exito)
{
//echo "<li style='text-align:left'><b>$email</b> - Error: ".$mail->ErrorInfo."</li>";
}
else
{
//echo "<li style='text-align:left'><b>$email</b> - Envio Correcto</li>";
$enviados.=$email.", ";
}
$mail->ClearAddresses();
$x++;
}
if ($enviados<>"")
echo "<p>El mensaje con asunto <strong><i>\"$asunto\"</i></strong> ha sido enviado a
las siguientes direcciones:</p>".$enviados;
}