Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/05/2010, 21:24
Avatar de Alma_Fuerte
Alma_Fuerte
 
Fecha de Ingreso: mayo-2010
Ubicación: Argentina
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Pregunta Problema con envio de mail con PHPMailer

Hola a todos los foreros, este es mi primer post. Me llamo Cesar y soy de Argentina.
Trabajo como desarrollador web para una empresa, pero soy nuevo alli asique aun me falta mucha mas experiencia en todo lo que tiene que ver con el desarrollo de paginas dinamicas usando PHP.

Y hablando de PHP se me ha presentado un problema en el ultimo proyecto con el que estuve trabajando.

La cosa esa asi: tengo un formulario como parte de una pagina web, mediante el cual se pueden enviar campos de texto y se pueden adjuntar y enviar hasta 3 fotografias o imagenes.
Para el envio del formulario me valgo de la clase PHPMailer y el envio lo hago por SMTP. Adjunto parte del codigo que tengo:

Código PHP:
<?php
function armo_mail(){
    global 
$envio_pri;
    global 
$envio_seg;
    global 
$envio_ter;

    
$mail = new PHPMailer();

    
$mail->IsSMTP();

    if (
$envio_pri!=1) {
        
$adjunto1=ereg_replace('../fotos/'''$envio_pri);
        
$mail->AddAttachment($envio_pri);
    }
    if (
$envio_seg!=1) {
        
$mail->AddAttachment($envio_seg);
        
$adjunto2=ereg_replace('../fotos/'''$envio_seg);
    }
    if (
$envio_ter!=1) {
        
$mail->AddAttachment($envio_ter);
        
$adjunto3=ereg_replace('../fotos/'''$envio_ter);
    }

    
    
$mail->Host "mail.dominio.com.mx";
    
$mail->From       $_POST["email"];
    
$mail->FromName   $_POST["nombre"];
    
//$mail->AddAddress("[email protected]");
    
$mail->AddAddress("[email protected]");
    
$mail->AddAddress("[email protected]");
    
$mail->Subject    "Formulario de Envio de Fotografías";
    
$mail->Body       =  "ACA ARMO EL BODY"
    


    
$mail->IsHTML(true);
    if(!
$mail->Send()) {
        return 
false;
    } else {
        return 
true;
    }    

// END OF FUNCTION armo_mail()


error_reporting(-1);

if(
$_POST["accion"]=="enviar"){ //si ya envio el form
    
if (captcha()){ //si el codigo de verificacion es valido
        
if (compruebo_fotos()){ //si las fotos son correctas
            
if (armo_mail()){
                
mensaje(EXITO);
            }else{
                
mensaje(ERROR_MAIL);
            }
        }else{
            
mensaje(ERROR_FOTOS);
        }
    }else{
        
mensaje(ERROR_VERIF);
    }
}else{ 
//si no envio el form
?>

<table border="0" align="center" cellpadding="0" cellspacing="0" background="../imagenes/fondo_form.jpg" style="background-repeat:repeat-y">
  <tr><td><img src="../imagenes/encab_form.jpg" alt="encabezado">
  <form action="envia_fotos.php" name="contacto" id="contacto" method="post" enctype="multipart/form-data">
        <label><strong>Cuestionario:</strong><br>
<br>

CUERPO DEL FORMULARIO
...
El problema con mi codigo radica en la siguiente linea:

$mail->IsSMTP();
. . .

$mail->Host = "mail.dominio.com.mx";
$mail->From = $_POST["email"];
$mail->FromName = $_POST["nombre"];

Asi lo tenia y no funcionaba, no mandaba los datos del formulario. Para intentar solucionarlo comente la linea:
$mail->IsSMTP();

Y haciendo esto se arreglo el problema que tenia; el envio se realizo sin problemas.

Y esto es el hecho que me desconcierta y no entiendo. No se supone que el metodo IsSMTP() es el que se debe usar para hacer el envio por SMTP??. Porque entonces cuando invoco el metod el envio por SMTP no funciona y si no lo invoco funciona de maravilla.
Alguien podria explicarme porque ocurre esto?.

Muchas gracias