Foros del Web » Programando para Internet » PHP »

Ayuda novato problemas con mail()

Estas en el tema de Ayuda novato problemas con mail() en el foro de PHP en Foros del Web. Hola, ando aprendiendo PHPy llevo unos idas atascado con la funcion mail.... Ante todo decir que de momento estoi "programando" en un XP corriente y ...
  #1 (permalink)  
Antiguo 24/02/2007, 08:36
 
Fecha de Ingreso: febrero-2007
Mensajes: 2
Antigüedad: 17 años, 2 meses
Puntos: 0
Ayuda novato problemas con mail()

Hola, ando aprendiendo PHPy llevo unos idas atascado con la funcion mail....
Ante todo decir que de momento estoi "programando" en un XP corriente y moliente bajo PHP5+APACHE2

El codigo en cuestion es muy simple

Código PHP:
if (array_key_exists('ewComments'$_POST)){
    
//Codigo de proceso del correo
    //inicializacion de variables
    
$to '[email protected]'//use su propia direccion de correo
    
$subject 'Formulario de East-West Seasons';
    
    
//generación del mensaje
    
$message 'From: '.$_POST['name']."\n\n";
    
$message .= 'Email:'.$_POST['email']."\n\n";
    
$message .= 'Comments:'.$_POST['message'];

    
//creación de cabeceras adicionales
    
$additionalHeaders "From: E-W Seasons <[email protected]>\r\n";
    
$additionalHeaders .= 'Reply to:'.$_POST['email'];
    
    
//enviar el correo
    
mail($to$subject$message$additionalHeaders);
    } 
El caso es que al enviar el correo a traves de un formularío me sale este error

Cita:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\htdocs\phpdw\contact.php on line 21
He revisado el php.ini (el unico q tengo en mi PC) y los valores de STMP son:
Cita:
SMTP=mail.suprecenter34.com
smtp_port=25
[email protected]
sin comprneder el error, utilicé la funcion ini_set() para cambiarlo desde el propio código:
Código PHP:
ini_set('SMTP''mail.suprecenter34.com'); 
Aun así sigue dando el mismo error básicamente
Cita:
Warning: mail() [function.mail]: Failed to connect to mailserver at "mail.suprecenter34.com" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\htdocs\phpdw\contact.php on line 21
No se como solucionar este fallo la verdad, he comporbado varias cosas:
- si el firewall me bloqueaba el puerto 25 (no lo bloquea).
- he comporbado el server y efectivamente el puerto SMTP que usa es el 25.
- He enviado desde la cuenta de correo del server un mensaje a 2 destinatarios, uno dentro del server y otro a una cuenta de hotmail, el enviado a la cuenta del hotmail no lo he recibido, pero presupongo q es normal, ya que la he mandado hace poco y pued que se retrase.

¿alguien puede tener la amabilidad de echarme un cable y decirme que sucede?.

Muchas gracias
  #2 (permalink)  
Antiguo 24/02/2007, 09:22
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 2 meses
Puntos: 0
De acuerdo Re: Ayuda novato problemas con mail()

Hoy en dia casi el 100% de los servidores de SMTP necesitan autenticacion... esto significa que necesitas enviarles tu nombre de usuario y contraseña al servidor para enviar mail.. lamentablemente php no trae esta funcion incluida por lo que deberas usar una clase de envio de mails externa que permita authentication SMTP. A continuacion pego una funcion de envio de mails con autenticacion para que les sirva de ejemplo.
Código:
<?php
//new function

$to = "[email protected]";
$nameto = "Who To";
$from = "[email protected]";
$namefrom = "Who From";
$subject = "Hello World Again!";
$message = "World, Hello!"
authSendEmail($from, $namefrom, $to, $nameto, $subject, $message);
?>


<?php
/* * * * * * * * * * * * * * SEND EMAIL FUNCTIONS * * * * * * * * * * * * * */ 

//Authenticate Send - 21st March 2005
//This will send an email using auth smtp and output a log array
//logArray - connection, 

function authSendEmail($from, $namefrom, $to, $nameto, $subject, $message)
{
    //SMTP + SERVER DETAILS
    /* * * * CONFIGURATION START * * * */
    $smtpServer = "mail.server.com";
    $port = "25";
    $timeout = "30";
    $username = "smtpusername";
    $password = "smtppassword";
    $localhost = "localhost";
    $newLine = "\r\n";
    /* * * * CONFIGURATION END * * * * */
    
    //Connect to the host on the specified port
    $smtpConnect = fsockopen($smtpServer, $port, $errno, $errstr, $timeout);
    $smtpResponse = fgets($smtpConnect, 515);
    if(empty($smtpConnect)) 
    {
        $output = "Failed to connect: $smtpResponse";
        return $output;
    }
    else
    {
        $logArray['connection'] = "Connected: $smtpResponse";
    }

    //Request Auth Login
    fputs($smtpConnect,"AUTH LOGIN" . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['authrequest'] = "$smtpResponse";
    
    //Send username
    fputs($smtpConnect, base64_encode($username) . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['authusername'] = "$smtpResponse";
    
    //Send password
    fputs($smtpConnect, base64_encode($password) . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['authpassword'] = "$smtpResponse";

    //Say Hello to SMTP
    fputs($smtpConnect, "HELO $localhost" . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['heloresponse'] = "$smtpResponse";
    
    //Email From
    fputs($smtpConnect, "MAIL FROM: $from" . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['mailfromresponse'] = "$smtpResponse";
        
    //Email To
    fputs($smtpConnect, "RCPT TO: $to" . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['mailtoresponse'] = "$smtpResponse";
    
    //The Email
    fputs($smtpConnect, "DATA" . $newLine);
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['data1response'] = "$smtpResponse";
    
    //Construct Headers
    $headers  = "MIME-Version: 1.0" . $newLine;
    $headers .= "Content-type: text/html; charset=iso-8859-1" . $newLine;
    $headers .= "To: $nameto <$to>" . $newLine;
    $headers .= "From: $namefrom <$from>" . $newLine;
    
    fputs($smtpConnect, "To: $to\nFrom: $from\nSubject: $subject\n$headers\n\n$message\n.\n");
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['data2response'] = "$smtpResponse";
    
    // Say Bye to SMTP
    fputs($smtpConnect,"QUIT" . $newLine); 
    $smtpResponse = fgets($smtpConnect, 515);
    $logArray['quitresponse'] = "$smtpResponse";    
}
?>
Este codigo fue crado por bjpalmer

La otra solucion es instalar un SMTP RELAY SERVER en tu pc y hacer que tu maquina se convierta enun server de envio de mails sin necesita de autenticacion. Aqui les dejo el link para encontrar un SMTP REALY SERVER busquen en GOOGLE lo siguiente: "SMTP RELAY SERVER"+download .Traten de buscar uno gratis

Otra de las soluciones es modificar el archivo PEAR de envio de mail y agregar tu propia funcion... pero es bastante complicado y la verdad no lo he provado nunca

Espero que les sea de utilidad. SALUDOS!
  #3 (permalink)  
Antiguo 24/02/2007, 16:55
 
Fecha de Ingreso: febrero-2007
Mensajes: 2
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Ayuda novato problemas con mail()

Muchas gracias, el caso es que he subido el codigo que escribi en un server remoto y probando desde allí funciona, el caso es que no funciona cuando lo pruebo con el server local...
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 18:46.