Foros del Web » Programando para Internet » PHP »

Problema con envio de mail con PHPMailer

Estas en el tema de Problema con envio de mail con PHPMailer en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/05/2010, 21:24
Avatar de 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
  #2 (permalink)  
Antiguo 27/05/2010, 22:45
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Problema con envio de mail con PHPMailer

usa $mail->SMTPAuth = false; para indicar que el SMTP no requiere autentificación.

además verifica que el host SMTP te lo permita, de lo contrario te pedirá autenticar (puedes pedir que creen un usuario para solo envíos).

verifica además tener la clase de SMTP de phpmailer junto a ella (class.phpmailer).
  #3 (permalink)  
Antiguo 27/05/2010, 23:36
Avatar de Alma_Fuerte  
Fecha de Ingreso: mayo-2010
Ubicación: Argentina
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema con envio de mail con PHPMailer

Gracias por tu respuesta amigo maycolalvarez, mi servidor ftp aparentemente no requiere autentificacion.
Lo que vos me sugeris es que use: $mail->SMTPAuth = false en lugar de $mail->IsSMTP();

Es asi?. Entendi bien??

Y con respecto a lo ultimo que me escribis que seria la clase de SMTP para phpmailer??. Necesito usar otra clase ademas de PHPMailer??

Etiquetas: email, mail, phpmailer
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 21:31.