Tengo un problema y no doy con la solución. Estoy cargando un array desde un archivo de texto y cuando muestro su contenido está perfecto, tanto recorriendolo (foreach) como con var_dump($arreglo);
Ahora bien, estoy usando una clase llamada smtp_validateEmail.class.php que permite realizar validaciones de emails, no de formato sino si el buzón realmente existe en el servidor.
Este ejemplo funciona correctamente validando la existencia del recipiente [email protected]
Código:
Un modo para validar varios correos a la vez es colocarlos en un array, asi:<?php $email = '[email protected]'; require_once('smtp_validateEmail.class.php'); $sender = '[email protected]'; $SMTP_Validator = new SMTP_validateEmail(); $SMTP_Validator->debug = true; $results = $SMTP_Validator->validate(array($email), $sender); // Observen que la variable del correo se convierte a un arreglo para entrar a la función echo $email.' is '.($results[$email] ? 'valid' : 'invalid')."\n"; ?>
Código:
Como pueden ver, hay unas pequeñas diferencias entre este código y el anterior:<?php $emails = array('[email protected]', '[email protected]', '[email protected]', '[email protected]'); require_once('smtp_validateEmail.class.php'); $sender = '[email protected]'; $SMTP_Validator = new SMTP_validateEmail(); $SMTP_Validator->debug = true; $results = $SMTP_Validator->validate($emails, $sender); foreach($results as $email=>$result) { if ($result) { echo 'El correo '. $email.' es valido'; } else { echo 'El correo '. $email.' no es valido'; } } ?>
1- Se carga un arreglo con los correos.
2- Se recorre el $result para mostrar los resultados.
Este segundo ejemplo funciona muy bien también.
El tercer intento, que es el que me causa problema difiere sólo porque el arreglo se carga desde un archivo de texto.
Código:
Sin embargo, el resultado que arroja es sólo para el último correo del archivo. Es decir, no valida todos los correos, sino solamente el último.<?php $emails = file("correos.txt"); require_once('smtp_validateEmail.class.php'); $sender = '[email protected]'; $SMTP_Validator = new SMTP_validateEmail(); $SMTP_Validator->debug = true; $results = $SMTP_Validator->validate($emails, $sender); foreach($results as $email=>$result) { if ($result) { echo 'El correo '. $email.' es valido'; } else { echo 'El correo '. $email.' no es valido'; } } ?>
Como dije, yo evalué ambos arreglos y lucen identicos, tanto con
$emails = array('[email protected]', '[email protected]');
como con
$emails = file("correos.txt");
Al recorrerlos muestra exactamente lo mismo. Igual que al hacer var_dump($email)
¿Donde puede estar el error?
Yo lo que necesito es usar un .txt porque planeo verificar una lista de más de 5.000 emails.
Saludos y muchas gracias,
Luis Vásquez
PD: Les dejo el link de la clase para que prueben y saquen provecho de esto, que luce interesante.
http://www.phpclasses.org/browse/file/25142.html