Foros del Web » Programando para Internet » PHP »

Enviar mail con archivo adjunto - variable fopen definida

Estas en el tema de Enviar mail con archivo adjunto - variable fopen definida en el foro de PHP en Foros del Web. Hola a todos Tengo un problema que no encuentro en San Google o no se como buscarlo. Encontre este codigo en la red donde enviar ...
  #1 (permalink)  
Antiguo 24/10/2011, 15:43
Avatar de Yedi  
Fecha de Ingreso: junio-2006
Ubicación: México
Mensajes: 159
Antigüedad: 18 años, 5 meses
Puntos: 2
Exclamación Enviar mail con archivo adjunto - variable fopen definida

Hola a todos

Tengo un problema que no encuentro en San Google o no se como buscarlo. Encontre este codigo en la red donde enviar un mail con archivo adjunto y funciona muy bien, el problema es cuando yo quiero definir la ruta del archivo.
Algo asi como enviar ya adjunto este archivo a un amigo

El codigo es el siguiente:



Código PHP:
function form_mail($sPara$sAsunto$sTexto$sDe)
{
$bHayFicheros 0;
$sCabeceraTexto "";
$sAdjuntos "";

if (
$sDe)$sCabeceras "From:".$sDe."\n";
else 
$sCabeceras "";
$sCabeceras .= "MIME-version: 1.0\n";
foreach (
$_POST as $sNombre => $sValor)
$sTexto $sTexto."\n".$sNombre." = ".$sValor;


foreach (
$_FILES as $vAdjunto)
{
if (
$bHayFicheros == 0)
{
$bHayFicheros 1;
$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";

$sCabeceraTexto "----_Separador-de-mensajes_--\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";

$sTexto $sCabeceraTexto.$sTexto;
}
if (
$vAdjunto["size"] > 0)
{
$sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";

$url "/var/www/html/pruebas/mail/MailAdjunto/archivo.pdf";
$oFichero fopen($url'r');
$sContenido fread($oFicherofilesize($url));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);

}


/*
hice esta prueba para comrobar q realmente se puede llegar a este archivo
$nombre_archivo = '/var/www/html/pruebas/mail/MailAdjunto/archivo.pdf';
if (is_readable($nombre_archivo)) {
    echo 'El archivo es legible';
} else {
    echo 'El archivo no es legible';
} */

 
if ($bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
echo (
$oFichero);
return(
mail($sPara$sAsunto$sTexto$sCabeceras));
}

//cambiar aqui el email
if (form_mail("[email protected]."$_POST[asunto],
"Los datos introducidos en el formulario son:\n\n"$_POST[email]))
echo 
"Su formulario ha sido enviado con exito"

Revise los permisos para acceder al archivo, el nombre correcto y nada
Saludos y les agradezco sus comentario
  #2 (permalink)  
Antiguo 24/10/2011, 15:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Enviar mail con archivo adjunto - variable fopen definida

¿Y cual es el error que recibes, si se puede saber?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/10/2011, 15:46
Avatar de Yedi  
Fecha de Ingreso: junio-2006
Ubicación: México
Mensajes: 159
Antigüedad: 18 años, 5 meses
Puntos: 2
Respuesta: Enviar mail con archivo adjunto - variable fopen definida

jaja Grax por la pregunta, pues no recibo ningun error, el correo se envía bien pero no adjunta nada.

En cambio cuando el usuario selecciona el archivo a enviar lo hace sin problemas.

Última edición por Yedi; 24/10/2011 a las 15:49 Razón: mejor explicación del problema
  #4 (permalink)  
Antiguo 24/10/2011, 15:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Enviar mail con archivo adjunto - variable fopen definida

Lo que sucede, es que el bloque que adjunta dicho archivo está dentro del bloque que usa $_FILES, por lo cual si no existe ningún upload por ende no se adjunta nada.

Intenta mover dicho bloque de código a un punto donde si se ejecute independientemente de si se subió o no un archivo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/10/2011, 16:28
Avatar de Yedi  
Fecha de Ingreso: junio-2006
Ubicación: México
Mensajes: 159
Antigüedad: 18 años, 5 meses
Puntos: 2
Respuesta: Enviar mail con archivo adjunto - variable fopen definida

oh toda la razón, lo pruebo y les comento como me fue.. gracias :)

Etiquetas: definida, fopen, formulario, html, mail, adjuntos, variables
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 14:05.