Cita: Te quería hacer dos preguntas una respecto de la validadción de email, como sería este tema? porque yo valido el mail cuando entra en la base desde el formulario de login... a eso te referías?
Si lo haces así .. no tendría mucho sentido repetir la operación cuando envias el e-mail .. Pero a veces se introducen datos por otros médios a tus BBDD, ya sean por procesos de importación "masivos" de datos que no pudistes o no sabes si están correctos o por otras causas.
Cita: PHPMailer envía aprentemente de una forma (como lo estoy usando yo), y también vía SMTP... mi pregunta es que me conviene hacer con tal de no saturar mi server y de que mi server no aparesca en ninguna "lista negra"...
En principio PHPMailer puede enviar el e-mail usando la función mail() de PHP nativa de este, usando el MTA: sendmail() y usando conexión directa SMTP. No sé ahora como "por defecto" PHPMailer lo hace .. (siempre uso el método SMTP directo y así lo especifico en:
Código PHP:
$mail->Mailer = "smtp";
// junto con otros datos sobre el Host y demás para el envio por SMTP directo ...
El tema de evitar caer en "listas negras" o no .. no depende de que si usastes mail() o un servidor SMTP tuyo própio directo. Depende de las condiciones que rodean al envio del e-mail en sí .. no tanto de PHP. PHP con PHPMailer ajusta en la medida de lo posible las cabeceras del e-mail .. rigiendose en los RFC's que las definen, pero .. es al final de todo tu servidor de correo el que envia el e-mail, el cual "corre" bajo cierto domino/IP registrado (con sus registros MX en regla .. su dominio registrado o no asociado .. ). Todo eso es parte del envio del e-mail y lo que los filtros de "SPAM" validan entre otras cosas. A las "listas negras" se añaden IP's/dominos que se ha comprobado que hacen SPAM y así son consultados por los filtros de anti-SPAM para validar si quien envia el e-mail está en esas listas o no (insisto: entre otras cosas que validan).
Por cierto .. se me olvidó algo bien importante .. que ahora me dí cuenta:
Haces en tu código:
Cita: while($row = mysql_fetch_array($result3)){ <--- inicias un bucle
$mail = new PHPMailer(); <-- instancias el objeto PHPMailer constantemente a cada pasada del bucle ..
También más abajo .. vuelves a instanciar el objeto nuevamente:
Cita: // Envio mail informando al adminitrador
$mail = new PHPMailer();
El objeto .. su "instancia" ($mail=new PHPMailer();) sólo debes hacerlo -una vez- .. al principio del script .. envies los e-mails que envies. Para eso .. PHPMailer tiene sus métodos para "resetear" las direcciones de e-mail que puedas haber acomulado con un:
Código PHP:
$mail->AddAddress($row3[email]));
Ates de cerrar tu bucle:
Código PHP:
while(....) {
.....
aquí};
Debes usar:
Código PHP:
$mail->ClearAddresses();
Tienes otra función similar para "resetear" archivos adjuntos si lo usases de la misma forma ...
Un saludo,