Foros del Web » Programando para Internet » PHP »

Guardar en la BD correos regresados por Return-Path

Estas en el tema de Guardar en la BD correos regresados por Return-Path en el foro de PHP en Foros del Web. Hola amigos espero me puedan ayudar. Tengo que enviar muchos correos electrónicos, y estoy utilizando la clase phpmail para su envío, la pregunta es: ¿ ...
  #1 (permalink)  
Antiguo 06/07/2007, 17:48
 
Fecha de Ingreso: diciembre-2002
Ubicación: d.f
Mensajes: 79
Antigüedad: 21 años, 3 meses
Puntos: 0
Sonrisa Guardar en la BD correos regresados por Return-Path

Hola amigos espero me puedan ayudar.

Tengo que enviar muchos correos electrónicos, y estoy utilizando la clase phpmail para su envío, la pregunta es: ¿ existe la posibilidad de que pueda guardar en un archivo o en la Base de Datos, la lista de correos que me sean regresados (Return-Path)?. Les comento que dentro de la clase le pongo el buzón al cual se me tiene que regresar los correos ($mail->Sender = "[email protected]";) y esto me funciona bien, pero quisiera cachar dichos errores en el momento que ejecuto el programa, para después presentarle al usuario un reporte con la lista de correos no enviados y un detalle.

Espero me puedan ayudar con sus comentarios

Muy Buenisimas noches
Atte:
rvargas
..... ....
$mail = new PHPMailer();
$mail->Mailer = "smtp";
$mail->Host = ".........";
$mail->SMTPAuth = true;
$mail->Username = "";
$mail->Password = "";
$mail->From = $p_array_registro['mail_from'];
$mail->FromName = $p_array_registro['name_from'];
$mail->ContentType= "text/html";
$mail->Timeout=10;
$mail->AddAddress($correo);
$mail->Subject = $p_array_registro['subject'];
$mail->Body = html_entity_decode("Hola esto es un mensaje de prueba");
$mail->Sender = "[email protected]";
$respuesta_envios = $mail->Send();
  #2 (permalink)  
Antiguo 07/07/2007, 08:06
 
Fecha de Ingreso: enero-2005
Ubicación: Salta - Argentina
Mensajes: 322
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Guardar en la BD correos regresados por Return-Path

No comprendo exactamente tu duda, la case PHPMailer indica si el correo se envió con exito o no. Pero no puede garantizar que no te llegue el Return-Path.

Entre otras cosas, PHPmailer solo comprueba que la direccion de correo electronica esta bien escrita (en cuanto a formato), verifica si el servidor está disponible, etc... bajo esos parametros devuelve si el correo se envió con exito o no.

ahora,si lo que tu quieres es saber si el correo se envio por medio de PHPMailer, entonces se puede poner algo como esto:

if($mail->Send()){
echo $email.' Enviado con exito';
}else{
echo $email.' Error en el envio...';
}

En el mensaje indicas que tienes que enviar correos a varias personas, calculo que estas armando un sistema de Newsletters (o similar) en ese caso, tendrias que meter parte de ese codigo que pusiste dentro de un ciclo, pero debes de tener CUIDADO con esto, aveces PHP exede el tiempo de ejecución y solo se enviarian unos pocos correos y el usuario no veria nada de nada.

Espero poder ayudarte.
  #3 (permalink)  
Antiguo 09/07/2007, 11:04
 
Fecha de Ingreso: diciembre-2002
Ubicación: d.f
Mensajes: 79
Antigüedad: 21 años, 3 meses
Puntos: 0
Re: Guardar en la BD correos regresados por Return-Path

Hola Netyco:

Esta es la función que utilizo, en los correos que pongo de prueba todos pasan en la parte que dice “Correo enviado con éxito”., sín embargo como utilice el return-Path me envía una notificación a mi buzón personal de los correos que no se enviaron por que no existen los buzones o el host. No se si exista alguna forma de cachar los errores en PHP sin que entre a mi buzón personal ya que ahí me están llegando las notificaciones de los correos que fueron rechazados. Esto lo requiero para presentarle al usuario un reporte de los correos que tuvieron problemas de envío, una vez que éste haya enviado su newsletter.

Saludos y Buenísimos días.
rvargas

function envia_correo($p_array_registro){

$INCLUDE_DIR = "../";
require("phpunit.php");
require($INCLUDE_DIR."class.phpmailer.php");

////Estos son los correos que estoy probando y me dice que fueron enviados con
////éxito ( al propósito puse correos invalidos)
/// "[email protected]";
/// "[email protected]";
/// "[email protected]";


for ($i=1;$i<=3;$i++) {
$mail = new PHPMailer();
$mail->Mailer = "smtp";
$mail->Host = "micorreo.loquesea.mx";
$mail->SMTPAuth = true;
$mail->Username = "";
$mail->Password = "";
$mail->From = $p_array_registro['mail_from'];
$mail->FromName = $p_array_registro['name_from'];
$mail->ContentType= "text/html";
$mail->Timeout=10;
$mail->AddAddress($p_array_registro['correo']);
$mail->Subject = $p_array_registro['subject'];
$mail->Body = html_entity_decode("Hola esto es un mensaje de prueba");
$mail->Sender = "[email protected]";

$exito= $mail->Send();

if (!$exito){
echo "<BR>Problemas con el envío de:". $p_array_registro['correo']."<BR>error:".$email;
}//Del if
else{
echo "Correo enviado con éxito de: ". $p_array_registro['correo'];
}//Del else

//sleep(2);// dormir dos segundos entre conexion al smtp
}//Del for
} //Del la funcion
  #4 (permalink)  
Antiguo 09/07/2007, 11:09
 
Fecha de Ingreso: enero-2005
Ubicación: Salta - Argentina
Mensajes: 322
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Guardar en la BD correos regresados por Return-Path

Estimado amigo,

Si lo puedes hacer, quizás puedas conectarte por medio de POP3 a la casilla donde llegan los correos, PERO el problema es que no creo que puedas mostrarle el reporte al cliente en tiempo real, dado a que los mensajes de error pueden llegar en algunas horas (depende de la configuración de cada servidor).

Quizás te sirva esta clase: http://www.phpclasses.org/browse/file/3.html
  #5 (permalink)  
Antiguo 09/07/2007, 11:19
 
Fecha de Ingreso: diciembre-2002
Ubicación: d.f
Mensajes: 79
Antigüedad: 21 años, 3 meses
Puntos: 0
Re: Guardar en la BD correos regresados por Return-Path

Estimado Netyco:

Muchas gracias, checaré la clase que me comentas

Que estes bien
rvargas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:58.