Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/09/2009, 14:33
SJENERT
 
Fecha de Ingreso: julio-2009
Mensajes: 178
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: ayuda para poder adjuntar img en mail

lo probé y no me funciono, almenos el otro si me sirvio a la primera, lo malo es que no llegan bien los archivos

esre es el codigo
Código ejemplo:
Ver original
  1. <?
  2.    
  3.    //Es necesario que al menos halla una dirección de destino
  4.    $error="";
  5.  
  6.    if ($enviar) {
  7.       if ((!$email1) && (!$email2)) {
  8.     $error.="Debe indicar al menos una dirección de destino";
  9.       }
  10.    }
  11.    
  12.    if ($enviar && !$error) {
  13.  
  14.       //creamos un array que estará formado por las direcciones de destino
  15.       if ($email1) {
  16.     $direcciones["direccion1"]=$email1;
  17.       }
  18.       if ($email2) {
  19.     $direcciones["direccion2"]=$email2;
  20.       }
  21.  
  22.    
  23.       //pasamos a enviar el correo
  24.  
  25.       // primero hay que incluir la clase phpmailer para poder instanciar
  26.       //un objeto de la misma
  27.       require "includes/class.phpmailer.php";
  28.  
  29.       //instanciamos un objeto de la clase phpmailer al que llamamos
  30.       //por ejemplo mail
  31.       $mail = new phpmailer();
  32.  
  33.       //Definimos las propiedades y llamamos a los métodos
  34.       //correspondientes del objeto mail
  35.  
  36.       //Con PluginDir le indicamos a la clase phpmailer donde se
  37.       //encuentra la clase smtp que como he comentado al principio de
  38.       //este ejemplo va a estar en el subdirectorio includes
  39.       $mail->PluginDir = "includes/";
  40.  
  41.       //Con la propiedad Mailer le indicamos que vamos a usar un
  42.       //servidor smtp                            
  43.       $mail->Mailer = "smtp";
  44.  
  45.       //Asignamos a Host el nombre de nuestro servidor smtp
  46.       $mail->Host = "localhost"; //ya probe smtp.localhost.com
  47.      
  48.       //Le indicamos que el servidor smtp requiere autenticación
  49.       $mail->SMTPAuth = true;
  50.  
  51.       //Le decimos cual es nuestro nombre de usuario y password
  52.       $mail->Username = "jordanmen"; //ya probe [email protected]
  53.       $mail->Password = "oooooo";
  54.      
  55.       //Indicamos cual es nuestra dirección de correo y el nombre que
  56.       //queremos que vea el usuario que lee nuestro correo
  57.       $mail->From = "[email protected]";
  58.  
  59.       $mail->FromName = "Jordan probando el email";
  60.  
  61.       //Asignamos asunto y cuerpo del mensaje
  62.       //El cuerpo del mensaje lo ponemos en formato html, haciendo
  63.       //que se vea en negrita
  64.       $mail->Subject = "Prueba de phpmailer";
  65.       $mail->Body = "<b>Mensaje de prueba mandado con phpmailer  en formato html</b>";
  66.  
  67.       //Definimos AltBody por si el destinatario del correo no admite
  68.       //email con formato html
  69.       $mail->AltBody ="Mensaje de prueba mandado con phpmailer en formato texto";
  70.  
  71.       //el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar
  72.       //una cuenta gratuita y voy a usar attachments, por tanto lo pongo a 120  
  73.       $mail->Timeout=120;
  74.       //$archivo = "foto carne-1_PBY.jpg";
  75.  
  76.       //Indicamos el fichero a adjuntar si el usuario seleccionó uno en el formulario
  77.       if ($archivo !="none") {
  78.     $mail->AddAttachment($archivo,$archivo_name);
  79.       }
  80.  
  81.       //Indicamos cuales son las direcciones de destino del correo y enviamos
  82.       //los mensajes
  83.       reset($direcciones);
  84.       while (list($clave, $valor)=each($direcciones)) {
  85.     $mail->AddAddress($valor);
  86.  
  87.     //se envia el mensaje, si no ha habido problemas la variable $success
  88.     //tendra el valor true
  89.     $exito = $mail->Send();
  90.  
  91.     //Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas
  92.     //como mucho para intentar enviar el mensaje, cada intento se hara 5 s
  93.     //segundos despues del anterior, para ello se usa la funcion sleep
  94.     $intentos=1;
  95.     while((!$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){
  96.        sleep(5);
  97.            //echo $mail->ErrorInfo;
  98.            $exito = $mail->Send();
  99.            $intentos=$intentos+1;              
  100.     }
  101.  
  102.     //La clase phpmailer tiene un pequeño bug y es que cuando envia un mail con
  103.     //attachment la variable ErrorInfo adquiere el valor Data not accepted, dicho
  104.     //valor no debe confundirnos ya que el mensaje ha sido enviado correctamente
  105.     if ($mail->ErrorInfo=="SMTP Error: Data not accepted") {
  106.        $exito=true;
  107.         }
  108.        
  109.     if(!$exito)
  110.     {
  111.        echo "Problemas enviando correo electrónico a ".$valor;
  112.        echo "<br>".$mail->ErrorInfo;   
  113.     }
  114.     else
  115.     {
  116.        //Mostramos un mensaje indicando las direccion de
  117.        //destino y fichero  adjunto enviado en el mensaje  
  118.        $mensaje="<p>Has enviado un mensaje a:<br>";
  119.        $mensaje.=$valor." ";
  120.        if ($archivo !="none") {
  121.         $mensaje.="Con un fichero adjunto llamado ".$archivo_name;
  122.        }
  123.        $mensaje.="</p>";
  124.            echo $mensaje;
  125.  
  126.  
  127.     }
  128.     // Borro las direcciones de destino establecidas anteriormente
  129.         $mail->ClearAddresses();
  130.    
  131.     }
  132.     echo "<a href='$PHP_SELF'> VOLVER AL FORMULARIO</a>";
  133.    }
  134.    else {
  135.    ?>
  136.  
  137.    <HTML>
  138.    <BODY>
  139.    <? If ($error) echo "<font color='red'>$error</font>";?>
  140.    <FORM ENCTYPE="multipart/form-data" METHOD="post" ACTION="<?=$PHP_SELF?>">
  141.    <TABLE BORDER=0 ALIGN="CENTER">
  142.     <TR>
  143.       <TD>Direccion de destino1:</TD>
  144.       <TD><INPUT TYPE="text" NAME="email1" MAXLENGTH="30" SIZE="35"></TD>
  145.     </TR>
  146.       <TD>Direccion de destino2:</TD>
  147.       <TD><INPUT TYPE="text" NAME="email2" MAXLENGTH="35" SIZE="35"></TD>
  148.     </TR>
  149.       <TD>Fichero adjunto:</TD>
  150.       <input type="hidden" name="MAX_FILE_SIZE" value="307200">
  151.       <TD><INPUT TYPE="file" NAME="archivo" SIZE="35"></TD>
  152.     </TR>
  153.     <TR>
  154.       <TD COLSPAN="2" ALIGN="CENTER"><INPUT TYPE="submit" VALUE="Enviar" name="enviar"></TD>
  155.     </TR>
  156.     </TABLE>
  157.    </FORM>
  158.    </BODY>
  159.    </HTML>
  160.    <?
  161.    }
  162. ?>