Foros del Web » Programando para Internet » PHP »

como enviar solo una imagen con phpmailer

Estas en el tema de como enviar solo una imagen con phpmailer en el foro de PHP en Foros del Web. Hola a todos! estoy preparando un formulario con phpmailer en el cual se podrá enviar a una direccion de correo electronico una serie de datos ...
  #1 (permalink)  
Antiguo 16/12/2015, 14:49
 
Fecha de Ingreso: marzo-2011
Mensajes: 105
Antigüedad: 8 años, 8 meses
Puntos: 3
como enviar solo una imagen con phpmailer

Hola a todos!

estoy preparando un formulario con phpmailer en el cual se podrá enviar a una direccion de correo electronico una serie de datos y dos archivos..

el problema que tengo es que si no incluye los dos archivos adjuntos el correo no se envía.. y yo lo que quiero es que el correo se envíe tanto si tiene un archivo adjunto como si tiene los dos.

seguramente estoy metiendo la pata con el codigo, pero no encuentro donde, si alguien me puede hechar un cable se lo agradeceria mucho

aquí teneis mi codigo, saludos!

Código HTML:
Ver original
  1. <form name="mail_frm" action="enviook.php" method="post" enctype="multipart/form-data">
  2. <p><br/><br/>
  3.  Asunto:
  4.   <input type"text" name="asunto" id="asunto" />
  5.   <br/><br/>
  6.  Adjuntar archivo:
  7.   <input type="file" name="archivo_fls"/> <br/><br/>
  8.  Adjuntar archivo dos:
  9.    <input type="file" name="archivodos"/> <br/><br/>
  10. </p>
  11. Mensaje: <br/>
  12.   <textarea name="mensaje_txa"></textarea>
  13.   <br/><br/>
  14.   <br/><br/>
  15.   <input type="submit" name="button" id="enviar_btn" value="Enviar" />
  16.   <br/>
  17. </p>
  18. <?php
  19. error_reporting (E_ALL ^ E_NOTICE ^ E_WARNING);
  20. if (isset ($_GET ["respuesta"])){
  21.     echo "<span>".$_GET["respuesta"]."</span>";
  22.     }
  23. ?>
  24. </form>



Código PHP:
Ver original
  1. <?php
  2.  
  3. $mensaje= htmlspecialchars($_POST["mensaje_txa"]);
  4. $asunto= $_POST["asunto"];
  5.  
  6.  
  7. $archivo=  $_FILES["archivo_fls"]["tmp_name"];
  8. $destino=  $_FILES["archivo_fls"]["name"];
  9. $archivodos=  $_FILES["archivodos"]["tmp_name"];
  10. $destinodos=  $_FILES["archivodos"]["name"];
  11.  
  12.  
  13. $cabeceras = "MIME-Version: 1.0\r\n";
  14. $cabeceras .="Content-type: text/html; charset=iso-8859-1\r\n";
  15. $cabeceras .="From: $de \r\n";
  16.  
  17. if(move_uploaded_file($archivo,$destino)) {
  18. if(move_uploaded_file($archivodos,$destinodos)) {  
  19.    
  20.    
  21.     include("class.phpmailer.php");
  22.     include("class.smtp.php");
  23.    
  24.     $mail = new PHPMailer();
  25.     $mail->IsSMTP();
  26.     $mail->SMTPAuth = true;
  27.     $mail->SMTPSecure = "ssl";
  28.     $mail->Host = "smtp.mihost.com";
  29.     $mail->Port = 465;
  30.     $mail->From = "micorreo";
  31.     $mail->AddAddress ("micorreo");
  32.     $mail->Username = "micorreo";
  33.     $mail->Password = "micontraseña";
  34.     $mail->Subject ="formulario de registro";
  35.     $mail->WordWrap =50;
  36.     $mail->MsgHTML("Mensaje: $mensaje<br>Asunto: $asunto<br>");
  37.    
  38.    
  39.     $mail->AddAttachment($destino);
  40.     $mail->AddAttachment($destinodos);
  41.    
  42.     if($mail->Send()){  
  43.         $respuesta =" El mensaje ha sido enviado correctamente";
  44.         }
  45.         else{
  46.         $respuesta = "el mensaje NO se pudo enviar";
  47.         $respuesta .= " Error ".$mail->ErrorINfo;
  48.             }
  49.         }}
  50.         else{
  51.             $respuesta ="ocurrio un error al subir el archivo adjunto ";
  52.             }
  53. header ("Location: nuevousuario.php?respuesta=$respuesta");
  54.  ?>
  #2 (permalink)  
Antiguo 16/12/2015, 14:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 8 meses
Puntos: 2534
Respuesta: como enviar solo una imagen con phpmailer

En tu código tienes las condiciones move_uploaded_file() y eso efectivamente impide que el resto del código se ejecute si alguna condición falla.

Debes corregir tu lógica para eso:
Código PHP:
Ver original
  1. // MAL
  2. if (x) {
  3.   if (y) {
  4.     z
  5.   }
  6. }
  7.  
  8. // BIEN
  9. z
  10.  
  11. if (x) { add_x }
  12. if (y) { add_y }

Es decir, el código principal que arma el correo debe ejecutarse primero, pero antes de enviarlo debes validad tus dos "attachments" para agregarlos sólo si existen.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/12/2015, 15:50
 
Fecha de Ingreso: marzo-2011
Mensajes: 105
Antigüedad: 8 años, 8 meses
Puntos: 3
Respuesta: como enviar solo una imagen con phpmailer

muchas gracias por responder pateketrueke!

pero no entiendo muy bien lo que me dices..

es que soy novatillo en esto del php

dices que lo ponga asi?

Código PHP:
Ver original
  1. if(move_uploaded_file($archivo,$destino)) {$mail->AddAttachment($destino);}
  2. if(move_uploaded_file($archivodos,$destinodos)) {$mail->AddAttachment($destino);}


Etiquetas: formulario, html, phpmailer, registro
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 05:46.