email con datos adjuntos
Publicado por Roberto (22 intervenciones) el 08/01/2022 15:47:16
Cordial saludo.
Envio un correo con un documento .docx adjunto.
el correo llega, pero al descargar el documento adjunto, este está corrupto, no abre
he ensayado con un archivo.zip, doc.docx y con foto.jpg
mi necesidad es descargar un documento .docx
algo debe estar mal
mi codigo es:
Gracias
Envio un correo con un documento .docx adjunto.
el correo llega, pero al descargar el documento adjunto, este está corrupto, no abre
he ensayado con un archivo.zip, doc.docx y con foto.jpg
mi necesidad es descargar un documento .docx
algo debe estar mal
mi codigo es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
$txtNombre = "averiguo.com";
$txtMail = "librosmagneticos@gmail.com";
$txtFile = "doc.docx";
$cabecera = "From: averiguo.com <info@averiguo.com>\r\n";
$datos = "Cuerpo del Mensaje";
$mensaje = "Archivo adjunto";
// Si se seleccionó un archivo, se adjunta:
if( empty($txtFile) == false )
{
// Creamos una cadena aleatoria como separador:
$separador = md5(uniqid(time()));
// Comprobamos si el archivo fue subido, y leemos su contenido
if(is_uploaded_file($txtFile))
{
// Leemos el archivo obteniéndolo como una cadena de texto:
$archivo = fopen($txtFile, "rb");
$datos = fread( $archivo, filesize($txtFile) );
fclose($archivo);
// Dividimos la cadena de texto en varias partes más pequeñas:
$datos = chunk_split( base64_encode($datos) );
}
// Creamos la cabecera del mensaje:
$cabecera .= "MIME-Version: 1.0\r\n".
"Content-Type: multipart/mixed; boundary=\"".$separador."\"\r\n\r\n";
// Construimos el cuerpo del mensaje (para el texto):
$mensaje = "--".$separador."\r\n";
$mensaje .= "Content-Type:text/plain; charset='iso-8859-1'\r\n";
$mensaje .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$mensaje .= $_POST['txtMensaje']."\r\n\r\n";
// Continuamos construyendo el cuerpo del mensaje, añadiendo el archivo:
$mensaje .= "--".$separador."\r\n";
$mensaje .= "Content-Type: ".$txtFile."; name=".$txtFile."\r\n";
$mensaje .= "Content-Transfer-Encoding: base64\r\n";
$mensaje .= "Content-Disposition: attachment; filename=".$txtFile."\r\n\r\n";
$mensaje .= $datos."\r\n\r\n";
/*
Si se fuera a insertar otro archivo, tras haber leído el contenido del mismo y haberlo cargado en otra
variable, repetiríamos aquí las cinco líneas anteriores (cambiando el nombre del componente del formulario
en $_FILES)
*/
// Separador de final del mensaje
$mensaje .= "--".$separador."--";
}
else
{
// No se adjuntó ningún archivo, enviamos sólo el texto del mensaje:
$mensaje = "Mensaje de: ".$txtNombre.PHP_EOL;
$mensaje .= "EMail: ".$txtMail.PHP_EOL.PHP_EOL;
$mensaje .= $_POST['txtMensaje'];
}
// IMPORTANTE: debes sustituir la dirección de correo por aquella en que deseas recibir el EMail:
$ok = mail( trim($txtMail), "Actuacion", $mensaje, $cabecera );
if( $ok == true )
echo "<p>El E-Mail ha sido enviado</p>";
?>
Gracias
- Contacto-con-el-Portal.rar(41,1 KB)
Valora esta pregunta


0