Foros del Web » Programando para Internet » PHP »

Trozear cadena y enviar email por partes.

Estas en el tema de Trozear cadena y enviar email por partes. en el foro de PHP en Foros del Web. Hola a [email protected], tengo un script que he sacado de las faqs para enviar correos electrónicos y quiero hacer lo siguiente: antes de enviar el ...
  #1 (permalink)  
Antiguo 02/09/2005, 02:14
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 717
Antigüedad: 15 años
Puntos: 7
Trozear cadena y enviar email por partes.

Hola a [email protected], tengo un script que he sacado de las faqs para enviar correos electrónicos y quiero hacer lo siguiente: antes de enviar el texto quiero comprobar su longitud, si es inferior a un número de caracteres, se envia tal cual, pero si lo supera, quiero partir esa cadena en tantas partes como sean necesarias y que cada trozo tenga como máximo es número de caracteres para a continuación mandar cada trozo por separado. Por ejemplo, pongamos que el número máximo es 500. Si el mensaje es de menor longitud se envia, pero si tiene 854 habría que hacer dos trozos, uno de 500 y otro de 354 y enviarlos por separado. Ahh el código que tengo para los emails es el siguiente:

Código PHP:
<?php 
$sfrom
=""//cuenta que envia 
$sdestinatario=""//cuenta destino 
$ssubject=""//subject 
$shtml=""//mensaje 
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n"
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n"
$sheader=$sheader."Mime-Version: 1.0\n"
$sheader=$sheader."Content-Type: text/html"
mail($sdestinatario,$ssubject,$shtml,$sheader); 
?>
Habría que meter antes la comprobación de longitud y después meter el envio en un bucle, no??

Gracias por la ayuda, Salu2
__________________
Vayamos por Partes :: Jack el Destripador
  #2 (permalink)  
Antiguo 02/09/2005, 03:08
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 14 años, 3 meses
Puntos: 4
Puede que te sirva la funcion strlen(); Esta funcion te devuelve la longitud de un String. A partir de la condicion harias el bucle para trocearla con la funcion substr() por ejemplo.
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #3 (permalink)  
Antiguo 02/09/2005, 03:11
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 717
Antigüedad: 15 años
Puntos: 7
Y como se haría todo eso?? Es que no tengo ni idea :(
__________________
Vayamos por Partes :: Jack el Destripador
  #4 (permalink)  
Antiguo 02/09/2005, 03:26
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 14 años, 3 meses
Puntos: 4
Podria ser algo asi:
Código PHP:
<?php 
$sfrom
=""//cuenta que envia
$sdestinatario=""//cuenta destino
$ssubject=""//subject
$shtml=""//mensaje
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";

$auxiliar="";
if(
strlen($shtml)>500){
    
$numCaracteres=strlen($shtml);
    
$inicio=0;
    
$fin=500;
    while(
$numCaracteres>=500){
        
$auxiliar=substr($shtml,$inicio,$fin);
        
mail($sdestinatario,$ssubject,$auxiliar,$sheader);
        
$numCaracteres-=500;
        
$fin+=500;
        
$inicio+=500;
    }
}else{
    
mail($sdestinatario,$ssubject,$shtml,$sheader);
}
?>
No lo he probado mucho pero creo que funcionaria.... y seguro que hay una forma mejor de hacerlo.
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #5 (permalink)  
Antiguo 12/09/2005, 08:15
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 717
Antigüedad: 15 años
Puntos: 7
Con esto me servirá jeje a ver si luego tengo tiempo de probarlo. Muchas gracias, salu2
__________________
Vayamos por Partes :: Jack el Destripador
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 20:39.