Foros del Web » Programando para Internet » PHP »

Problemas con envio de mail

Estas en el tema de Problemas con envio de mail en el foro de PHP en Foros del Web. Hola a todos, encontre el siguiente script en el cual se realzia un backup de la base de datos y ademas se envia el archivo ...
  #1 (permalink)  
Antiguo 22/08/2007, 08:04
Avatar de merkano  
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 8 meses
Puntos: 0
Problemas con envio de mail

Hola a todos, encontre el siguiente script en el cual se realzia un backup de la base de datos y ademas se envia el archivo generado por mail, el backup funciona perfectamente, pero no me lo envia por mail, alguien tiene alguna sugerencia.-

Cita:
<?php
require('../../Connections/cajaprof.php');
// CONFIGURACIÓN.
$dbhost = 'localhost'; // Servidor base de datos.
$dbuname = 'root'; // Usuario base de datos.
$dbpass = 'xxx'; // Contraseña base de datos.
$dbname = 'cajaprevprof'; // Nombre base de datos.
$mail_enviar='[email protected]'; // Mail a enviar la base de datos.
$ruta='./backup/'; // Ruta del directorio donde se guardar archivo temporal. [./ para el raíz]

/* Descargar la base de datos en gzip (al máximo) y enviar por mail.*/
function backup_mysql()
{
// Variables globales
global $dbhost,$dbuname,$dbpass,$dbname,$mail_enviar,$rut a;

// Crear nombres de los ficheros backup
$fecha=time(); // Fecha actual
$archivo=gmstrftime("%y-%m-%d",$fecha); // Formato de la fecha para dar nombre al fichero
$archivo=$ruta.$archivo.'.sql'; // Archivo sql
$archivo_gz=$archivo.'.gz'; // Archivo sql.gz

// Descarga de la base de datos
@system('mysqldump --host='.$dbhost.' --user='.$dbuname.' --password='.$dbpass.' --opt --quick '.$dbname.' > '.$archivo); // Crear un archivo con el contenido de la base de datos
if(file_exists($archivo)) // Si ha creado correctamente el backup
{
$comprimido=comprimir($archivo,$archivo_gz); // Comprimirlo en gzip
if($comprimido=='TRUE')
enviar_adjunto ($archivo_gz,'Base de datos'); // Envio de mail comprimido
else
enviar_adjunto ($archivo,'Base de datos'); // Envio de mail sin comprimir

//@unlink($archivo); // Borrar fichero sql
//@unlink($archivo_gz); // Borrar fichero sql.gz

return TRUE; // Regresa confirmado el backup
}
else // No ha podido crear el backup
return FALSE; // Regresa denegando el backup
}

// Comprimir en gzip un archivo
function comprimir($archivo_original,$archivo_comprimido)
{
$fp=@gzopen($archivo_comprimido,'w9'); // Crear archivo comprimido
if($fp!='FALSE') // Comprobar que zLib esta activo
{
$fp2=@fopen($archivo_original,'r'); // Abrir archivo original
$buffer=@fread($fp2,filesize($archivo_original));// Leer archivo original
@fclose($fp2); // Cerrar archivo original
@gzwrite($fp,$buffer); // Escribir archivo comprimido
@gzclose($fp); // Cerrar archivo comprimido
return TRUE; // Regresa confirmado la compresión
}
else
return FALSE; // Regresa sin comprimirlo
}

// ENVIO DE CORREO CON ADJUNTO COMPRIMIDO
// Adaptado de http://www.tecnocodigo.com/dipro/php/ver.php?categoria=email&articulo=0
function enviar_adjunto($archivo,$asunto)
{
global $mail_enviar;

$buffer = implode("", file($archivo)); // Leer fichero
$buffer=chunk_split(base64_encode($buffer)); // Codificación en base64 y divido

// Cabeceras
$cabecera = "MIME-version: 1.0\n";
$cabecera .= "Content-type: multipart/mixed; ";
$cabecera .= "boundary=\"Message-Boundary\"\n";
$cabecera .= "Content-transfer-encoding: 7BIT\n";
$cabecera .= "X-attachments: $archivo";

// Mensaje
$mensaje = "--Message-Boundary\n";
$mensaje .= "Content-type: text/plain; charset=ISO-8859-1\n";
$mensaje .= "Content-transfer-encoding: 7BIT\n";
$mensaje .= "Content-description: Mail message body\n\n";

// Adjuntar el fichero
$mensaje .= "\n\n--Message-Boundary\n";
$mensaje .= "Content-type: Binary; name=\"$archivo\"\n";
$mensaje .= "Content-Transfer-Encoding: BASE64\n";
$mensaje .= "Content-disposition: attachment; filename=\"$archivo\"\n\n";
$mensaje .= "$buffer\n";
$mensaje .= "--Message-Boundary--\n";

@mail($mail_enviar,$asunto,$mensaje,$cabecera); // Envio de mail
}

?>
Gracias a todos y saludos mis amigos!!!
  #2 (permalink)  
Antiguo 22/08/2007, 08:07
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: Problemas con envio de mail

Te recomiendo que hagas lo siguiente

Modifica

Código PHP:
mail($mail_enviar,$asunto,$mensaje,$cabecera); 
por

Código PHP:
if(mail($mail_enviar,$asunto,$mensaje,$cabecera))
echo 
"Envio exitoso";
//Me faltaba un ";"
else
echo 
"Error en el envio"
Además... ¿Tienes en tu servidor un SMTP para el envio de correos?

Saludillos.

Última edición por mauled; 22/08/2007 a las 08:26
  #3 (permalink)  
Antiguo 22/08/2007, 08:10
Avatar de merkano  
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problemas con envio de mail

amigo si agrego las lineas de codigo que me pasaste, no me realiza el backup, no realiza nada.-

Saludos.-
  #4 (permalink)  
Antiguo 22/08/2007, 08:20
Avatar de merkano  
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problemas con envio de mail

Otra consultas amigos.....como hago para poder restaurar la copia de seguridad, utilizando una forma similar a la que use para hacer el backup.

Muchas Gracias a todos!!!
  #5 (permalink)  
Antiguo 22/08/2007, 08:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Problemas con envio de mail

Te recomiendo utilizar la clase PHPMailer para poder hacer el envio de correos con archivos adjuntos.

Saludos.
  #6 (permalink)  
Antiguo 22/08/2007, 08:31
Avatar de merkano  
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problemas con envio de mail

Gracias mi amigo!!!, lo pruebo y te comento como me fue
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 22:33.