Ver Mensaje Individual
  #8 (permalink)  
Antiguo 04/01/2007, 10:29
Avatar de blakeyed
blakeyed
 
Fecha de Ingreso: marzo-2004
Ubicación: Ahora mismo, Málaga
Mensajes: 78
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: enviar muchos correos con PHP

Disculpa, me refería a enviar varios correos con la misma conexión.
Estableces una conexión SMTP al servidor. Ten en cuenta que la función mail() conecta y desconecta cada vez que la llamas por lo que tarda más, y es posible que algún envío no salga bien porque el servidor detecte que reconectas muchas veces.

Copio y pego desde php.net (he puesto también un par de notas entre medias

Cita:
function mymail($to,$subject,$message,$headers)
{

// set as global variable
global $GLOBAL;

// get From address
if ( preg_match("/From:.*?[A-Za-z0-9\._%-]+\@[A-Za-z0-9\._%-]+.*/", $headers, $froms) ) {
preg_match("/[A-Za-z0-9\._%-]+\@[A-Za-z0-9\._%-]+/", $froms[0], $fromarr);
$from = $fromarr[0];
}

// Open an SMTP connection
$cp = fsockopen ($GLOBAL["SMTP_SERVER"], $GLOBAL["SMTP_PORT"], &$errno, &$errstr, 1);
if (!$cp)
return "Failed to even make a connection";
$res=fgets($cp,256);
if(substr($res,0,3) != "220") return "Failed to connect";

// Say hello...
fputs($cp, "HELO ".$GLOBAL["SMTP_SERVER"]."\r\n");
$res=fgets($cp,256);
if(substr($res,0,3) != "250") return "Failed to Introduce";

// perform authentication
fputs($cp, "auth login\r\n");
$res=fgets($cp,256);
if(substr($res,0,3) != "334") return "Failed to Initiate Authentication";

fputs($cp, base64_encode($GLOBAL["SMTP_USERNAME"])."\r\n");
$res=fgets($cp,256);
if(substr($res,0,3) != "334") return "Failed to Provide Username for Authentication";

fputs($cp, base64_encode($GLOBAL["SMTP_PASSWORD"])."\r\n");
$res=fgets($cp,256);
if(substr($res,0,3) != "235") return "Failed to Authenticate";


/* AQUI INICIAMOS EL BUCLE PARA MANDAR CORREOS. Vamos cambiando las direcciones de destinatario y los cuerpos de mensajes si queremos para llamar dentro del email a los usuarios por su nombre si queremos*/


// Mail from...
fputs($cp, "MAIL FROM: <$from>\r\n"); // Aqui pones tu dirección
$res=fgets($cp,256);
if(substr($res,0,3) != "250") return "MAIL FROM failed";

// Rcpt to...
fputs($cp, "RCPT TO: <$to>\r\n"); // Aquí la dirección del destinatario
$res=fgets($cp,256);
if(substr($res,0,3) != "250") return "RCPT TO failed";

// Data...
fputs($cp, "DATA\r\n");
$res=fgets($cp,256);
if(substr($res,0,3) != "354") return "DATA failed";

// Send To:, From:, Subject:, other headers, blank line, message, and finish
// with a period on its own line (for end of message)
fputs($cp, "To: $to\r\nFrom: $from\r\nSubject: $subject\r\n$headers\r\n\r\n$message\r\n.\r\n");

// Respeta los \r\n pero cambia los datos que aparecen si quieres.

$res=fgets($cp,256);
if(substr($res,0,3) != "250") return "Message Body Failed";


// FIN DE TU BUCLE


// ...And time to quit...
fputs($cp,"QUIT\r\n");
$res=fgets($cp,256);
if(substr($res,0,3) != "221") return "QUIT failed";

return true;
}
Saludos
__________________
Saludos

Gaspar Fernández
Poesía Binaria