Foros del Web » Programando para Internet » PHP »

generar archivo Excel y enviarlo como adjunto usando la función mail()

Estas en el tema de generar archivo Excel y enviarlo como adjunto usando la función mail() en el foro de PHP en Foros del Web. Hola. Tengo un script en PHP que envía un e-mail usando simplemente la función mail() de PHP. 1º.- Hace una consulta a una base de ...
  #1 (permalink)  
Antiguo 14/12/2010, 09:32
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 14 años, 10 meses
Puntos: 1
Pregunta generar archivo Excel y enviarlo como adjunto usando la función mail()

Hola.

Tengo un script en PHP que envía un e-mail usando simplemente la función mail() de PHP.

1º.- Hace una consulta a una base de datos. HECHO

2º.- Después genera un archivo Excel Regular
Este código crea un .xsl con el contenido correcto, pero el formato del archivo no es acorde al estándar, y al abrirlo me sale mensaje avisando de eso. Lo abro y el contenido está bien, pero el mensaje de aviso anterior aparece. El código para generarlo es este:
Código:
header("Content-type: application/excel");
header("Content-Disposition: attachment; filename=".$filename."_".$datestamp.".xls");
header("Pragma: no-cache");
header("Expires: 0");
Me gustaría poder corregir ese detalle y además:

3º.- Añadirle el archivo generado al script que envía el email: NI IDEA
Código:
		$subject = 'MJgamers.com (LISTADO '.$datestamp.')';
		$body = "Saludos.<p />
		El resultado de <b>$query</b> sobre $dbname fueron $lineas artículos con estos valores: <p />";
				for($j=0;$j<$i;$j++){ 
					$articulo=$resultado[$j];
					echo $articulo."\n";
					$body.=$articulo."<br />";
				}
		$body.="<br />Saludos";

		//to send on HTML format
		$headers = "MIME-Version: 1.0\r\n";
		// to clear up which charset is a right one to see all characters on the e-mail correctly (UTF-8, iso-8859-15, or any other).
		$headers .= "Content-type: text/html; charset=UTF-8\r\n";

		//sender's address
		$headers .= "From: Admin <$nosotros>\r\n";

		//if we want to use a different answer mail just put it here (in the case it's different than the sender's mail
		//$headers .= "Reply-To: [email protected]\r\n";

		//path of the message, from origin to destination
		//$headers .= "Return-path: [email protected]\r\n";

		//mails that will receive as copy
		//$headers .= "Cc: [email protected]\r\n";

		//mails that will receive a hidden copy
		//$headers .= "Bcc: [email protected]\r\n";

/*************************************************************************************************************************/
		$envio = mail($reception,$subject,$body,$headers);
		if(!$envio){
			echo "<p />Algún dato no es válido: nosotros: $nosotros<p />
		<p />asunto: $subject,<p />cuerpo: $body <p /><br><a href='index.php'>Volver a INDEX</a> para solucionarlo.";
		}
		else{
			echo "OK";
		}
	
mysql_free_result($result);

@mysql_close($wpdb->dbh);
¿Podría alguien iluminarme?
__________________
No es verdad que sea un completo inútil. Al menos sirvo para dar mal ejemplo
  #2 (permalink)  
Antiguo 17/12/2010, 13:08
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: generar archivo Excel y enviarlo como adjunto usando la función mail()

según leo por ahí ya puedo ir olvidándome de crear un archivo de Excel con PHP a partir de una consulta SQL de forma "fácil", y yo no me quiero complicar mucho la vida.

También leo que se puede exportar desde phpMyAdmin a XML, lo cual podría servirme también.

Al menos intentaré con un simple .TXT, pero lo que no encuentro de forma sencilla es el sistema para añadir un archivo adjunto al e-mail.
__________________
No es verdad que sea un completo inútil. Al menos sirvo para dar mal ejemplo
  #3 (permalink)  
Antiguo 17/12/2010, 21:00
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 12 años, 2 meses
Puntos: 80
Respuesta: generar archivo Excel y enviarlo como adjunto usando la función mail()

Para generar verdaderos excel usa phpexcel de codeplex, en cuanto al envió de correo utiliza phpmailer sobre este ultimo existe mucha información en el foro.

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #4 (permalink)  
Antiguo 06/02/2014, 11:35
 
Fecha de Ingreso: febrero-2014
Mensajes: 1
Antigüedad: 5 años, 9 meses
Puntos: 0
Respuesta: generar archivo Excel y enviarlo como adjunto usando la función mail()

Que tal, yo tenía la misma problematica, necesitaba generar la consulta en XLS, que la almacenara y luego la enviara por correo, ok... lo primero era que usaba los headers al igual que tu, eso solo sirve para que mande los resultados al navegador, lo cual pues no se si realmente lo necesites, yo se lo quite, en ves de eso puse toda mi consulta en una sola variable y al final use este codigo:

file_put_contents('MiExcel.xls',utf8_decode($cuerp o));

esto guarda un archivo llamado MiExcel.xls en la carpeta donde anda mi archivo, el contenido que lleva el mismo lo trae la variable $cuerpo, el utf8_decode/encode sirve para que me reconozca los acentos las Ñ y todos esos cáracteres que tenemos en el español. espero te sirva esto, saludos

Etiquetas: excel, mail, mail(), header, adjuntos
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 08:54.