Foros del Web » Programando para Internet » PHP »

phpmailer formulario con 2 adjuntos

Estas en el tema de phpmailer formulario con 2 adjuntos en el foro de PHP en Foros del Web. ¡Hola! Soy novatilla en esto del php pero leyendo tutoriales he conseguido, con la clase phpmailer, enviar un formulario en el que el usuario adjunta ...
  #1 (permalink)  
Antiguo 05/11/2008, 09:48
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 5 meses
Puntos: 0
phpmailer formulario con 2 adjuntos

¡Hola! Soy novatilla en esto del php pero leyendo tutoriales he conseguido, con la clase phpmailer, enviar un formulario en el que el usuario adjunta una imagen. El problema comienza cuando quiero ampliar el número de adjuntos a dos.

El código que tengo para un adjunto en html es el siguiente:
<html >
<head>
<title>PHP Email Attach</title>
</head>
<body>Ingresar los datos en el formulario. <br>
<form action="mailattach.php" method="post" enctype="multipart/form-data">
Destinatario <input type="text" name="destino"> <br>
Asunto <input type="text" name="asunto"><br>
Adjunto <input type="file" name="archivo"><br>
Mensaje <textarea name="mensaje" cols="47" rows="8" id="mensaje"></textarea>
<input type="submit" name="btsend" class="boton" value="Enviar Email">
<input type="hidden" name="action" value="send" />

</form>
</body>
</html>


El php que tengo:
<?php
require("class.phpmailer.php");
$msg = "";
if ($_POST['action'] == "send")
{
$varname = $_FILES['archivo']['name'];
$vartemp = $_FILES['archivo']['tmp_name'];




$mail = new PHPMailer();
$mail->Host = "localhost";
$mail->From = "[email protected]";
$mail->FromName = "nombreFormulario";
$mail->Subject = $_POST['asunto'];
$mail->AddAddress($_POST['destino']);
if ($varname != "")
{
$mail->AddAttachment($vartemp, $varname);
}




$body = "<strong>Mensaje</strong><br><br>".$_POST['mensaje']."<br>";
$body.= "<i>Enviado</i>";
$mail->Body = $body;
$mail->IsHTML(true);
$mail->Send();
$msg = "Mensaje enviado correctamente";
}


?>



¿Alguien sabría cómo puedo hacerlo? ¿O algún dato que me ayude a ver la luz?
¡Gracias por vuestro tiempo!
Un saludo
  #2 (permalink)  
Antiguo 05/11/2008, 09:52
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: phpmailer formulario con 2 adjuntos

pero que error sale, explica bien el problema ps amigo.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #3 (permalink)  
Antiguo 05/11/2008, 09:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: phpmailer formulario con 2 adjuntos

Hola gizmito,

Revisa en las FAQs del foro como subir archivos multiples a PHP, estudialo y solo tendrás que cambiar la parte de subir el archivo por agregarlo como attachment.

Saludos.
  #4 (permalink)  
Antiguo 05/11/2008, 10:02
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 5 meses
Puntos: 0
Hola. El código escrito no me da ningún error; con él recibo un mail con las respuestas del formulario y la imagen adjunta que haya enviado el usuario.
El problema es que no sé cómo empezar para añadir al formulario otro adjunto.
En mis primeros intentos añadí al formulario la siguiente línea:
<Adjunto2 <input type="file" name="archivo2" >

y en el archivo .php probé a añadir estas:
$varname2 = $_FILES['archivo2']['name2'];
$vartemp2 = $_FILES['archivo2']['tmp_name2'];
if ($varname != "")
{
$mail->AddAttachment($vartemp, $varname,$vartemp2, $varname2);
}

Pero así no hacía nada, como era de esperar
(seguro que son burradas tremendas y esa función no admitirá tantos parámetros, pero como he dicho no sé de php).

Necesito que alguien me dé alguna pista o alguna solución al envío de dos adjuntos.

¡Muchas gracias!

¡¡Gracias Gator V !!
No había probado buscando "archivos multiples", ¡qué fallo! je : )
A ver si lo consigo.
Un saludooo

Última edición por GatorV; 05/11/2008 a las 10:22
  #5 (permalink)  
Antiguo 05/11/2008, 10:18
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: phpmailer formulario con 2 adjuntos

pero por que te complicas, seria asi creo:

en vez de:
$mail->AddAttachment($vartemp, $varname,$vartemp2, $varname2);

seria:
$mail->AddAttachment($vartemp, $varname,);
$mail->AddAttachment($vartemp2, $varname2);

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #6 (permalink)  
Antiguo 05/11/2008, 11:02
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: phpmailer formulario con 2 adjuntos

¡¡¡Resuelto!!! ¡¡Muchíiiisimas gracias Masterojitos por tu solución!!
Me estaba volviendo loca ya je.

Al final ha sido así como se ha resuelto el problema. Dejo el código por si a alguien le interesa:

<html >
<head>
<title>PHP Email Attach</title>
</head>
<body>Ingresar los datos en el formulario. <br>
<form action="mailattach.php" method="post" enctype="multipart/form-data">
Destinatario <input type="text" name="destino"> <br>
Asunto <input type="text" name="asunto"><br>
Adjunto <input type="file" name="archivo"><br>
Mensaje <textarea name="mensaje" cols="47" rows="8" id="mensaje"></textarea>
<input type="submit" name="btsend" class="boton" value="Enviar Email">
<input type="hidden" name="action" value="send" />

</form>
</body>
</html>







<?php

require("class.phpmailer.php");
$msg = "";
if ($_POST['action'] == "send")
{
$varname = $_FILES['archivo']['name'];
$vartemp = $_FILES['archivo']['tmp_name'];

$varname2 = $_FILES['archivo2']['name'];
$vartemp2 = $_FILES['archivo2']['tmp_name'];



$destino="[email protected]";
$mail = new PHPMailer();
$mail->Host = "localhost";
$mail->From = "[email protected]";
$mail->FromName = "nombreFormulario";
$mail->Subject = $_POST['asunto'];

$mail->AddAddress($destino);

if ($varname != "")
{
$mail->AddAttachment($vartemp, $varname);
$mail->AddAttachment($vartemp2, $varname2);
}




$body = "<strong>Mensaje</strong><br><br>".$_POST['mensaje']."<br>";
$body.= "<i>Enviado</i>";
$mail->Body = $body;
$mail->IsHTML(true);
$mail->Send();
$msg = "Mensaje enviado correctamente";
}




?>



¡Un saludo y gracias por vuestra veloz ayuda!
  #7 (permalink)  
Antiguo 05/11/2008, 11:05
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: phpmailer formulario con 2 adjuntos

te dire que esta mal tu logica, ya que si en el segundo upload no seleccionan nada, de todas formas estas adjuntando otro archivo, aca mira:
if ($varname != "")
{
$mail->AddAttachment($vartemp, $varname);
$mail->AddAttachment($vartemp2, $varname2);
}

seria mejor que lo hagas asi:
if ($varname != "")$mail->AddAttachment($vartemp, $varname);
if ($varname2!= "")$mail->AddAttachment($vartemp2, $varname2);

Dios te Bendiga.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #8 (permalink)  
Antiguo 05/11/2008, 11:23
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: phpmailer formulario con 2 adjuntos

Cierto. Como quiero que me envíen dos adjuntos lo he puesto así:

if ($varname != "" && $varname2!= "")
{
$mail->AddAttachment($vartemp, $varname);
$mail->AddAttachment($vartemp2, $varname2);
}
else {echo "No se han adjuntado dos datos adjuntos";}

Ya iré perfeccionando el código para que no se envíe hasta que estén todos los adjuntos, para que el mensaje de error que he puesto sea una página de error. Esas cosillas. Cuando lo vea completo lo subiré por si ven algún fallo y por si ayuda a alguien.
¡¡¡Gracias!!!
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:26.