Regresar a la página www.ComoCrearTuWeb.com
Resultados 1 al 10 de 10

Tema: Envío de correo sin autenticarse al servidor de correos

  1. #1
    Recien Llegado! Habitual
    Fecha de Ingreso
    07 dic, 10
    Ubicación
    www.kalcudoku.com
    Mensajes
    10
    Poder de Reputación
    15

    Envío de correo sin autenticarse al servidor de correos

    Buenas tardes a todos,

    Hace ya un par de años que contruí mi página web a través de Como Crear Tu Web (www.kalcudoku.com). Todo ha funcionado muy bien hasta que me acabo de dar cuenta que hace unos meses que mi formulario no funciona a la hora de enviar la informacion por email. El problema según mi Hosting es: el problema de su formulario es que en el código se intenta realizar envío de correo sin autenticarse al servidor de correos, lo cual es una práctica no permitida por permitir el envío de spam y correos anónimos.

    He mirado por interent pero no acabo de entender como hacer tal autentificación. La informacion la quiero enviar a una cuenta de hotmail.

    El código del archivo PHP es:

    <?php

    $nombre = $_POST ['nombre'];
    $apellidos = $_POST ['apellidos'];
    $poblacio = $_POST ['poblacio'];
    $telefon = $_POST ['telefon'];
    $correo = $_POST ['telefon'];

    $header = stripslashes($_POST['nombre']);
    $header = utf8_encode( stripslashes($_POST['nombre']) );
    $header = 'From:' . ($nombre) . " ";

    $header .= " ".($apellidos)." ";
    $header .= " kalcudoku";

    $mensaje .= "\nDades Contacte:";
    $mensaje .= "\n--------------------------------\n";
    $mensaje .= "Nom: " . utf8_encode($_POST['nombre']) . "\nCognoms: " . utf8_encode($_POST['apellidos']) . "\nemail: " . utf8_encode($_POST['correo']) .utf8_decode("\nTelèfon: ") . $_POST['telefon'] . utf8_decode("\nPoblació: ") . utf8_encode($_POST['poblacio']) ."\n";
    $mensaje .= "\nDades de l'alumne:";
    $mensaje .= "\n--------------------------------\n";
    $mensaje .= "Estudis: " . utf8_encode($_POST['estudis']) . ("\nCurs: ") . $_POST['curs'] . ("\nEsdat: ") . $_POST['edat'] . "\n";
    $mensaje .= "\n\nDisponibilitat horaria:";
    $mensaje .= "\n--------------------------------\n";
    $mensaje .= "Dilluns:\n";
    $mensaje .= "Mati: " . $_POST['dilluns1'] . " ". $_POST['dilluns2'] . " " . $_POST['dilluns3'] . " " . $_POST['dilluns4'] . " " . $_POST['dilluns5'] . "\n";
    $mensaje .= "Migdia: ". $_POST['dilluns6'] . " " . $_POST['dilluns7'] . " " . $_POST['dilluns8'] . " \n";
    $mensaje .= "Tarda: ". $_POST['dilluns9'] . " " . $_POST['dilluns10'] . " " . $_POST['dilluns10'] . " " . $_POST['dilluns12'] . " " . $_POST['dilluns13'] . " " . $_POST['dilluns14'] ."\n\n";
    $mensaje .= "Dimarts:\n";
    $mensaje .= "Mati: " . $_POST['dimarts1'] . " ". $_POST['dimarts2'] . " " . $_POST['dimarts3'] . " " . $_POST['dimarts4'] . " " . $_POST['dimarts5'] . "\n";
    $mensaje .= "Migdia: ". $_POST['dimarts6'] . " " . $_POST['dimarts7'] . " " . $_POST['dimarts8'] . " \n";
    $mensaje .= "Tarda: ". $_POST['dimarts9'] . " " . $_POST['dimarts10'] . " " . $_POST['dimarts11'] . " " . $_POST['dimarts12'] . " " . $_POST['dimarts13'] . " " . $_POST['dimarts14'] ."\n\n";
    $mensaje .= "Dimecres:\n";
    $mensaje .= "Mati: " . $_POST['dimecres1'] . " ". $_POST['dimecres2'] . " " . $_POST['dimecres3'] . " " . $_POST['dimecres4'] . " " . $_POST['dimecres5'] . "\n";
    $mensaje .= "Migdia: ". $_POST['dimecres6'] . " " . $_POST['dimecres7'] . " " . $_POST['dimecres8'] . " \n";
    $mensaje .= "Tarda: ". $_POST['dimecres9'] . " " . $_POST['dimecres10'] . " " . $_POST['dimecres11'] . " " . $_POST['dimecres12'] . " " . $_POST['dimecres13'] . " " . $_POST['dimecres14'] ."\n\n";
    $mensaje .= "Dijous:\n";
    $mensaje .= "Mati: " . $_POST['dijous1'] . " ". $_POST['dijous2'] . " " . $_POST['dijous3'] . " " . $_POST['dijous4'] . " " . $_POST['dijous5'] . "\n";
    $mensaje .= "Migdia: ". $_POST['dijous6'] . " " . $_POST['dijous7'] . " " . $_POST['dijous8'] . " \n";
    $mensaje .= "Tarda: ". $_POST['dijous9'] . " " . $_POST['dijous10'] . " " . $_POST['dijous11'] . " " . $_POST['dijous12'] . " " . $_POST['dijous13'] . " " . $_POST['dijous14'] ."\n\n";
    $mensaje .= "Divendres:\n";
    $mensaje .= "Mati: " . $_POST['divendres1'] . " ". $_POST['divendres2'] . " " . $_POST['divendres3'] . " " . $_POST['divendres4'] . " " . $_POST['divendres5'] . "\n";
    $mensaje .= "Migdia: ". $_POST['divendres6'] . " " . $_POST['divendres7'] . " " . $_POST['divendres8'] . " \n";
    $mensaje .= "Tarda: ". $_POST['divendres9'] . " " . $_POST['divendres10'] . " " . $_POST['divendres11'] . " " . $_POST['divendres12'] . " " . $_POST['divendres13'] . " " . $_POST['divendres14'] ."\n\n";
    $mensaje .= "Dissabte:\n";
    $mensaje .= "Mati: " . $_POST['dissabte1'] . " ". $_POST['dissabte2'] . " " . $_POST['dissabte3'] . " " . $_POST['dissabte4'] . " " . $_POST['dissabte5'] . "\n";
    $mensaje .= "Migdia: ". $_POST['dissabte6'] . " " . $_POST['dissabte7'] . " " . $_POST['dissabte8'] . " \n";
    $mensaje .= "Tarda: ". $_POST['dissabte9'] . " " . $_POST['dissabte10'] . " " . $_POST['dissabte11'] . " " . $_POST['dissabte12'] . " " . $_POST['dissabte13'] . " " . $_POST['dissabte14'] ."\n\n";
    $mensaje .= "\nObservacions: \n" . utf8_encode($_POST['observacions']). "\n";
    $mensaje .= "\nCom ens ha conegut: " . utf8_encode($_POST['ensconeixper']). "\n";

    $para = 'ignasigc@hotmail.com';
    $asunto = 'Contacte kalcudoku';

    mail($para, $asunto, utf8_decode($mensaje), $header);
    Header("Location: enviatc.html");

    ?>

    Si alguien puede ayudarme o decirme donde puedo encontrar información al respecto lo agradecería enormemente.

    Muchas gracias!!!

  2. #2
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    25
    Hola!

    Lo que pasa es que es la única forma en que se puede prevenir el envío masivo de SPAM. Según entiendo, necesitas tener un dominio para poder autentificar los correos, por ende, si aún no has comprado un dominio no podrías hacer lo que pongo a continuación, aunque sé que puedes utilizar tu sistema de correo (Google, Yahoo, Hotmail, Outlook, etc.) para poder hacerlo, aunque no sé cómo.

    Deberías utilizar una librería para poder enviar correo. Personalmente, utilizo PHPMailer: https://github.com/Synchro/PHPMailer (a la derecha hay un botón que dice Download ZIP).

    Del archivo que descargaste anteriormente, lo único que necesitas es:

    - class.phpmailer.php
    - class.pop3.php
    - class.smtp.php
    - PHPMailerAutoload.php
    - Carpeta language

    Crea una carpeta llamada phpmailer con estos archivos y la carpeta language. Luego añade lo siguiente al comienzo de tu código (el que has puesto anteriormente):

    Código PHP:
    include_once "phpmailer-conf.php"
    Crea el archivo phpmailer-conf.php y añade lo siguiente:

    Código:
    <?php
      define( 'MAILER_USER', 'usuario_correo' ); // El usuario del correo que puede enviar correos. Ejemplo: ignasigc@midominio.com.
      define( 'MAILER_PASS', 'contraseña_correo' ); // La contraseña que utilizas para ingresar a tu correo.
      define( 'MAILER_HOST', 'host_correo' ); // Usualmente es mail.tudominio.algo, donde tudominio.algo es algo como comocreartuweb.com. Revisa la documentación de tu hosting (o consulta al soporte técnico) para saber cuál es el Host de correo saliente SMTP.
      define( 'MAILER_TRANSPORT', 'smtp' ); // Esto no deberías cambiarlo a no ser de que puedas usar la función mail de PHP
      define( 'MAILER_SMTP_SECURITY', 'tipo_encriptación' ); // ssl, tls, etc.
      define( 'MAILER_SMTP_AUTH_ENABLED', true ); // Establece si la autentificación SMTP estará habilitada. Esto nunca debería ser false si pretendes usar SMTP.
      define( 'MAILER_SMTP_DEBUG_LEVEL', 0 ); // El nivel de verbosidad que se usará. No deberías usar ningún otro valor excepto para ver lo errores (en cuyo caso deberías usar el número 4).
      define( 'MAILER_CHARSET', 'utf-8' ); // Juego de caracteres. Si utilizas utf8_encode() para el mensaje, entonces utiliza utf-8.
    ?>
    Por último, modifica tu código para que quede así:

    Código PHP:
    <?php 
    $nombre 
    $_POST ['nombre'];
    $apellidos $_POST ['apellidos'];
    $poblacio $_POST ['poblacio'];
    $telefon $_POST ['telefon'];
    $correo $_POST ['telefon'];

    $mensaje .= "\nDades Contacte:";
    $mensaje .= "\n--------------------------------\n";
    $mensaje .= "Nom: " utf8_encode($_POST['nombre']) . "\nCognoms: " utf8_encode($_POST['apellidos']) . "\nemail: " utf8_encode($_POST['correo']) .utf8_decode("\nTelèfon: ") . $_POST['telefon'] . utf8_decode("\nPoblació: ") . utf8_encode($_POST['poblacio']) ."\n";
    $mensaje .= "\nDades de l'alumne:";
    $mensaje .= "\n--------------------------------\n"
    $mensaje .= "Estudis: " utf8_encode($_POST['estudis']) . ("\nCurs: ") . $_POST['curs'] . ("\nEsdat: ") . $_POST['edat'] . "\n";
    $mensaje .= "\n\nDisponibilitat horaria:";
    $mensaje .= "\n--------------------------------\n"
    $mensaje .= "Dilluns:\n";
    $mensaje .= "Mati: " $_POST['dilluns1'] . " "$_POST['dilluns2'] . " " $_POST['dilluns3'] . " " $_POST['dilluns4'] . " " $_POST['dilluns5'] . "\n";
    $mensaje .= "Migdia: "$_POST['dilluns6'] . " " $_POST['dilluns7'] . " " $_POST['dilluns8'] . " \n";
    $mensaje .= "Tarda: "$_POST['dilluns9'] . " " $_POST['dilluns10'] . " " $_POST['dilluns10'] . " " $_POST['dilluns12'] . " " $_POST['dilluns13'] . " " $_POST['dilluns14'] ."\n\n";
    $mensaje .= "Dimarts:\n";
    $mensaje .= "Mati: " $_POST['dimarts1'] . " "$_POST['dimarts2'] . " " $_POST['dimarts3'] . " " $_POST['dimarts4'] . " " $_POST['dimarts5'] . "\n";
    $mensaje .= "Migdia: "$_POST['dimarts6'] . " " $_POST['dimarts7'] . " " $_POST['dimarts8'] . " \n";
    $mensaje .= "Tarda: "$_POST['dimarts9'] . " " $_POST['dimarts10'] . " " $_POST['dimarts11'] . " " $_POST['dimarts12'] . " " $_POST['dimarts13'] . " " $_POST['dimarts14'] ."\n\n";
    $mensaje .= "Dimecres:\n";
    $mensaje .= "Mati: " $_POST['dimecres1'] . " "$_POST['dimecres2'] . " " $_POST['dimecres3'] . " " $_POST['dimecres4'] . " " $_POST['dimecres5'] . "\n";
    $mensaje .= "Migdia: "$_POST['dimecres6'] . " " $_POST['dimecres7'] . " " $_POST['dimecres8'] . " \n";
    $mensaje .= "Tarda: "$_POST['dimecres9'] . " " $_POST['dimecres10'] . " " $_POST['dimecres11'] . " " $_POST['dimecres12'] . " " $_POST['dimecres13'] . " " $_POST['dimecres14'] ."\n\n";
    $mensaje .= "Dijous:\n";
    $mensaje .= "Mati: " $_POST['dijous1'] . " "$_POST['dijous2'] . " " $_POST['dijous3'] . " " $_POST['dijous4'] . " " $_POST['dijous5'] . "\n";
    $mensaje .= "Migdia: "$_POST['dijous6'] . " " $_POST['dijous7'] . " " $_POST['dijous8'] . " \n";
    $mensaje .= "Tarda: "$_POST['dijous9'] . " " $_POST['dijous10'] . " " $_POST['dijous11'] . " " $_POST['dijous12'] . " " $_POST['dijous13'] . " " $_POST['dijous14'] ."\n\n";
    $mensaje .= "Divendres:\n";
    $mensaje .= "Mati: " $_POST['divendres1'] . " "$_POST['divendres2'] . " " $_POST['divendres3'] . " " $_POST['divendres4'] . " " $_POST['divendres5'] . "\n";
    $mensaje .= "Migdia: "$_POST['divendres6'] . " " $_POST['divendres7'] . " " $_POST['divendres8'] . " \n";
    $mensaje .= "Tarda: "$_POST['divendres9'] . " " $_POST['divendres10'] . " " $_POST['divendres11'] . " " $_POST['divendres12'] . " " $_POST['divendres13'] . " " $_POST['divendres14'] ."\n\n";
    $mensaje .= "Dissabte:\n";
    $mensaje .= "Mati: " $_POST['dissabte1'] . " "$_POST['dissabte2'] . " " $_POST['dissabte3'] . " " $_POST['dissabte4'] . " " $_POST['dissabte5'] . "\n";
    $mensaje .= "Migdia: "$_POST['dissabte6'] . " " $_POST['dissabte7'] . " " $_POST['dissabte8'] . " \n";
    $mensaje .= "Tarda: "$_POST['dissabte9'] . " " $_POST['dissabte10'] . " " $_POST['dissabte11'] . " " $_POST['dissabte12'] . " " $_POST['dissabte13'] . " " $_POST['dissabte14'] ."\n\n";
    $mensaje .= "\nObservacions: \n" utf8_encode($_POST['observacions']). "\n"
    $mensaje .= "\nCom ens ha conegut: " utf8_encode($_POST['ensconeixper']). "\n"

    $para 'ignasigc@hotmail.com';
    $asunto 'Contacte kalcudoku';

    $params = array(
      
    'from' => 'email de quién envía el mensaje',
      
    'fromName' => 'nombre de quien envía el mensaje',
      
    'to' => $para// Email del destinatario
      
    'subject' => $asunto,
      
    'html' => true// true si es que se envía un mensaje que incluya etiquetas HTML/CSS o false si se envía un mensaje plano.
      
    'body' => $mensaje
    );

    $r send_mail$params );

    if( 
    $r == '' ) {
      
    // El mensaje fue enviado
      
    header("Location: enviatc.html");
    } else {
      
    // Ocurrió un error al enviar el mensaje. Aquí deberías mostrar la información del error que devuelve la función send_mail. echo $r; por ejemplo.
    }

    function 
    send_mail$params ) {
      
    $return '';
      
    ob_start();
            
      require_once 
    "phpmailer/PHPMailerAutoload.php";
            
      
    $mail = new PHPMailer();
      
    $mail->Mailer             MAILER_TRANSPORT;
      
    $mail->SMTPDebug    MAILER_DEBUG_LEVEL;
      
    $mail->CharSet        MAILER_CHARSET;
      
    $mail->Host        MAILER_SMTP_HOST;
      
    $mail->SMTPAuth    MAILER_SMTP_AUTH_ENABLED;
      
    $mail->Username     MAILER_SMTP_USER;
      
    $mail->Password    MAILER_SMTP_PASS;
      
    $mail->SMTPSecure    MAILER_SMTP_SECURITY;
        
      
    $mail->From        $params['from'];
      
    $mail->FromName    $params['fromName'];
      
    $mail->AddReplyTo$params['from'], $params['fromName'] );
      
    $mail->AddAddress$params['to'] );
      
    $mail->WordWrap    70;
      
    $mail->Subject         $params['subject'];
            
      if( isset( 
    $params['html'] ) && $params['html'] === true )
        
    $mail->IsHTMLtrue );
        
      
    $mail->Body $params['body'];

      if( ! 
    $mail->Send() ) {
        
    $return trim$mail->ErrorInfo );
        
    $return .= "\nDebug PHPMailer:\n\n" ob_get_contents();
      }

      
    ob_end_clean();
            
      return 
    $return;
    }
    ?>
    Debes tener en cuenta lo siguiente:

    - La información para conectarse a través de SMTP la debes obtener de tu proveedor de hosting, pues es quién provee el servicio de emails.
    - El mensaje ya no necesita los \n, pues puedes utilizar HTML y CSS sin problemas.
    - Si utilizas una codificación de caracteres distinta a UTF-8, entonces debes cambiarlo en phpmailer-conf.php (o utilizar utf8_encode() en el mensaje).
    - Debes modificar las partes comentadas para que reflejen lo que quieres hacer.

    Eso debería bastar, aunque se me ocurre que no funcionará de una vez (encontrarás errores).

    Saludos!
    Última edición por skaparate; 01/07/2014 a las 21:27

  3. #3
    Recien Llegado! Habitual
    Fecha de Ingreso
    07 dic, 10
    Ubicación
    www.kalcudoku.com
    Mensajes
    10
    Poder de Reputación
    15
    Buenos días skaparate,

    Muchísimas gracias por tu respuesta. He hecho todo lo que me dices, pero no funciona. Tampoco me da ningún error. Simplemente la pantalla se me queda en blanco. No se muy bien que más tengo que tocar. He intentado añadir el puerto de salida en el archivo phpmailer-conf.php, pero con o sin puerto no va. Y por mucho que toque no consigo que al menos me de una ventana de error. Te adjunto de nuevo los archivos modificados por si se te ocurriese alguna cosa más. Muchísimas gracias!!!
    Archivos Adjuntados Archivos Adjuntados

  4. #4
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    25
    Hola!

    El puerto esta bien. El hecho de que se quede en blanco la pantalla es porque debe haber un error. Para intentar encontrarlo, modifica lo siguiente:

    Código:
    <?php 
    include_once "phpmailer-conf.php";
    error_reporting( E_ALL ); // Cuando arreglemos el problema debes quitar esta línea.
    $nombre = $_POST ['nombre']; 
    $apellidos = $_POST ['apellidos']; 
    $poblacio = $_POST ['poblacio']; 
    $telefon = $_POST ['telefon']; 
    $correo = $_POST ['telefon']; 
    
    $mensaje .= "\nDades Contacte:"; 
    $mensaje .= "\n--------------------------------\n"; 
    $mensaje .= "Nom: " . utf8_encode($_POST['nombre']) . "\nCognoms: " . utf8_encode($_POST['apellidos']) . "\nemail: " . utf8_encode($_POST['correo']) .utf8_decode("\nTelèfon: ") . $_POST['telefon'] . utf8_decode("\nPoblació: ") . utf8_encode($_POST['poblacio']) ."\n"; 
    $mensaje .= "\nDades de l'alumne:"; 
    $mensaje .= "\n--------------------------------\n";  
    $mensaje .= "Estudis: " . utf8_encode($_POST['estudis']) . ("\nCurs: ") . $_POST['curs'] . ("\nEsdat: ") . $_POST['edat'] . "\n"; 
    $mensaje .= "\n\nDisponibilitat horaria:"; 
    $mensaje .= "\n--------------------------------\n";  
    $mensaje .= "Dilluns:\n"; 
    $mensaje .= "Mati: " . $_POST['dilluns1'] . " ". $_POST['dilluns2'] . " " . $_POST['dilluns3'] . " " . $_POST['dilluns4'] . " " . $_POST['dilluns5'] . "\n"; 
    $mensaje .= "Migdia: ". $_POST['dilluns6'] . " " . $_POST['dilluns7'] . " " . $_POST['dilluns8'] . " \n"; 
    $mensaje .= "Tarda: ". $_POST['dilluns9'] . " " . $_POST['dilluns10'] . " " . $_POST['dilluns10'] . " " . $_POST['dilluns12'] . " " . $_POST['dilluns13'] . " " . $_POST['dilluns14'] ."\n\n"; 
    $mensaje .= "Dimarts:\n"; 
    $mensaje .= "Mati: " . $_POST['dimarts1'] . " ". $_POST['dimarts2'] . " " . $_POST['dimarts3'] . " " . $_POST['dimarts4'] . " " . $_POST['dimarts5'] . "\n"; 
    $mensaje .= "Migdia: ". $_POST['dimarts6'] . " " . $_POST['dimarts7'] . " " . $_POST['dimarts8'] . " \n"; 
    $mensaje .= "Tarda: ". $_POST['dimarts9'] . " " . $_POST['dimarts10'] . " " . $_POST['dimarts11'] . " " . $_POST['dimarts12'] . " " . $_POST['dimarts13'] . " " . $_POST['dimarts14'] ."\n\n"; 
    $mensaje .= "Dimecres:\n"; 
    $mensaje .= "Mati: " . $_POST['dimecres1'] . " ". $_POST['dimecres2'] . " " . $_POST['dimecres3'] . " " . $_POST['dimecres4'] . " " . $_POST['dimecres5'] . "\n"; 
    $mensaje .= "Migdia: ". $_POST['dimecres6'] . " " . $_POST['dimecres7'] . " " . $_POST['dimecres8'] . " \n"; 
    $mensaje .= "Tarda: ". $_POST['dimecres9'] . " " . $_POST['dimecres10'] . " " . $_POST['dimecres11'] . " " . $_POST['dimecres12'] . " " . $_POST['dimecres13'] . " " . $_POST['dimecres14'] ."\n\n"; 
    $mensaje .= "Dijous:\n"; 
    $mensaje .= "Mati: " . $_POST['dijous1'] . " ". $_POST['dijous2'] . " " . $_POST['dijous3'] . " " . $_POST['dijous4'] . " " . $_POST['dijous5'] . "\n"; 
    $mensaje .= "Migdia: ". $_POST['dijous6'] . " " . $_POST['dijous7'] . " " . $_POST['dijous8'] . " \n"; 
    $mensaje .= "Tarda: ". $_POST['dijous9'] . " " . $_POST['dijous10'] . " " . $_POST['dijous11'] . " " . $_POST['dijous12'] . " " . $_POST['dijous13'] . " " . $_POST['dijous14'] ."\n\n"; 
    $mensaje .= "Divendres:\n"; 
    $mensaje .= "Mati: " . $_POST['divendres1'] . " ". $_POST['divendres2'] . " " . $_POST['divendres3'] . " " . $_POST['divendres4'] . " " . $_POST['divendres5'] . "\n"; 
    $mensaje .= "Migdia: ". $_POST['divendres6'] . " " . $_POST['divendres7'] . " " . $_POST['divendres8'] . " \n"; 
    $mensaje .= "Tarda: ". $_POST['divendres9'] . " " . $_POST['divendres10'] . " " . $_POST['divendres11'] . " " . $_POST['divendres12'] . " " . $_POST['divendres13'] . " " . $_POST['divendres14'] ."\n\n"; 
    $mensaje .= "Dissabte:\n"; 
    $mensaje .= "Mati: " . $_POST['dissabte1'] . " ". $_POST['dissabte2'] . " " . $_POST['dissabte3'] . " " . $_POST['dissabte4'] . " " . $_POST['dissabte5'] . "\n"; 
    $mensaje .= "Migdia: ". $_POST['dissabte6'] . " " . $_POST['dissabte7'] . " " . $_POST['dissabte8'] . " \n"; 
    $mensaje .= "Tarda: ". $_POST['dissabte9'] . " " . $_POST['dissabte10'] . " " . $_POST['dissabte11'] . " " . $_POST['dissabte12'] . " " . $_POST['dissabte13'] . " " . $_POST['dissabte14'] ."\n\n"; 
    $mensaje .= "\nObservacions: \n" . utf8_encode($_POST['observacions']). "\n";  
    $mensaje .= "\nCom ens ha conegut: " . utf8_encode($_POST['ensconeixper']). "\n";  
    
    $para = 'ignasigc@hotmail.com'; 
    $asunto = 'Contacte kalcudoku'; 
    
    $params = array( 
      'from' => 'email de quién envía el mensaje', 
      'fromName' => 'nombre de quien envía el mensaje', 
      'to' => $para, // Email del destinatario 
      'subject' => $asunto, 
      'html' => true, // true si es que se envía un mensaje que incluya etiquetas HTML/CSS o false si se envía un mensaje plano. 
      'body' => $mensaje 
    ); 
    
    $r = send_mail( $params ); 
    
    if( $r == '' ) { 
      // El mensaje fue enviado 
      header("Location: enviatc.html"); 
    } else { 
      file_put_contents( 'mail.log', $r, FILE_APPEND );
    } 
    
    function send_mail( $params ) { 
      $return = ''; 
      ob_start(); 
             
      require_once "phpmailer/PHPMailerAutoload.php"; 
             
      $mail = new PHPMailer(); 
      $mail->Mailer             = MAILER_TRANSPORT; 
      $mail->SMTPDebug    = MAILER_DEBUG_LEVEL; 
      $mail->CharSet        = MAILER_CHARSET; 
      $mail->Host        = MAILER_SMTP_HOST; 
      $mail->SMTPAuth    = MAILER_SMTP_AUTH_ENABLED; 
      $mail->Username     = MAILER_SMTP_USER; 
      $mail->Password    = MAILER_SMTP_PASS; 
      $mail->SMTPSecure    = MAILER_SMTP_SECURITY; 
         
      $mail->From        = $params['from']; 
      $mail->FromName    = $params['fromName']; 
      $mail->AddReplyTo( $params['from'], $params['fromName'] ); 
      $mail->AddAddress( $params['to'] ); 
      $mail->WordWrap    = 70; 
      $mail->Subject         = $params['subject']; 
             
      if( isset( $params['html'] ) && $params['html'] === true ) 
        $mail->IsHTML( true ); 
         
      $mail->Body = $params['body']; 
    
      if( ! $mail->Send() ) { 
        $return = trim( $mail->ErrorInfo ); 
        $return .= "\nDebug PHPMailer:\n\n" . ob_get_contents(); 
      } 
    
      ob_end_clean(); 
             
      return $return; 
    } 
    ?>
    Y modifica la línea define( 'MAILER_SMTP_DEBUG_LEVEL', 0 ); para que quede así (sólo esa línea, las demás déjalas tal cual):

    phpmailer-conf.php
    Código PHP:
    define'MAILER_SMTP_DEBUG_LEVEL'); 
    Ejecuta el formulario, descarga el archivo mail.log (que estará en tu servidor) y luego publica los resultados (también publica cualquier error que muestre en pantalla).

  5. #5
    Recien Llegado! Habitual
    Fecha de Ingreso
    07 dic, 10
    Ubicación
    www.kalcudoku.com
    Mensajes
    10
    Poder de Reputación
    15

    Lightbulb Informe de mail.log

    Buenos días,

    Ante todo muchísimas gracias por la ayuda. Yo sólo no podría con esto. Ya he probado y por pantalla no sale ningún error. El archivo mail.log informa de lo siguiente:

    define( 'MAILER_SMTP_DEBUG_LEVEL', 4 );

    1 SMTP connect() failed.
    2 Debug PHPMailer:
    3
    4 SMTP connect() failed.


    Si modifico el 4 por el 0 entonces:

    define( 'MAILER_SMTP_DEBUG_LEVEL', 0 );

    1 SMTP connect() failed.
    2 Debug PHPMailer:
    3
    4 SMTP connect() failed.
    5 SMTP connect() failed.
    6 Debug PHPMailer:
    7
    8 SMTP connect() failed.

    Gracias de nuevo!

  6. #6
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    25
    El archivo dice que no se pudo conectar a través de SMTP (SMTP connect() failed), lo que puede significar varias cosas:

    1.- El mail de usuario SMTP y/o contraseña son erróneos, en cuyo caso corregir los datos bastaría.
    2.- Los datos para conectarse a través de SMTP están mal (MAILER_HOST, MAILER_SMTP_SECURITY y MAILER_SMTP_AUTH_ENABLED). Si tu hosting tiene CPanel, deberías poder ver los datos de conexión en la sección de las cuentas de email. De otra forma, deberías contactar al soporte técnico del hosting y pedir los datos.

  7. #7
    Recien Llegado! Habitual
    Fecha de Ingreso
    07 dic, 10
    Ubicación
    www.kalcudoku.com
    Mensajes
    10
    Poder de Reputación
    15
    Buenas noches,

    Me he mirado bien el CPanel, y efectivamente no había cogido bien los datos del servidor. Pero tras hacer los cambios, nada ha cambiado. Te adjunto el nuevo código PHP:

    <?php
    define( 'MAILER_USER', 'info@kalcudoku.com' );
    define( 'MAILER_PASS', 'XXXXXXX' );
    define( 'MAILER_HOST', 'euro1.ahwebhost.com:465' ); // he probado con o sin puerto pero no funciona. Tampoco se si el puerto hay que ponerlo y se si indica así
    define( 'MAILER_TRANSPORT', 'smtp' );
    define( 'MAILER_SMTP_SECURITY', 'ssl' ); // he puesto el primero porqué no tengo ni idea
    define( 'MAILER_SMTP_AUTH_ENABLED', true );
    define( 'MAILER_SMTP_DEBUG_LEVEL', 0 );
    define( 'MAILER_CHARSET', 'utf-8' );
    ?>

    Los datos que me da CPanel son:

    Segura SSL / TLS (Recomendado)
    Nombre de Usuario: info@kalcudoku.com
    Contraseña: Utilice la contraseña de la cuenta de correo electrónico.
    Servidor entrante: euro1.ahwebhost.com
    Puerto IMAP: 993
    Puerto POP3: 995
    Servidor de correo saliente: euro1.ahwebhost.com
    Puerto SMTP: 465
    Es necesaria la autenticación para IMAP, POP3 y SMTP.

    He hecho diferentes pruebas, pero ni siquiera consigo forzar otro tipo de error. No se me ocurre nada más )-:

    Cualquier cosa que creas que pueda hacer dímela e iré haciendo pruebas.

    Muchísimas gracias una vez más...

  8. #8
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    25
    Cambia MAILER_SMTP_DEBUG_LEVEL de 0 a 4, ejecuta el formulario y luego publica el contenido del archivo mail.log (de hecho, no cambies a 0 hasta que lo hayamos resuelto).

    Sobre la configuración, ahora está bien (cuando uno especifica un puerto, siempre es url:puerto, así que lo que has puesto está bien).

    Otra cosa que puedes intentar es dejar MAILER_SMTP_SECURITY vacío (en lugar SSL).

    ¿En el CPanel hay un cuadro o más de la configuración del mail? Te lo pregunto porque existen algunos hosting algo extraños, donde la configuración normal SMTP no funciona y hay que utilizar la configuración más simple (tuve este problema hace unas 2 semanas). Esto no es culpa del SMTP, sino del hosting que complica las configuraciones xD.

  9. #9
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    28 jun, 08
    Mensajes
    498
    Poder de Reputación
    20
    Me permito meter mi cuchara, para dar mi aporte, en mi experiencia con la clase PHPMailer el servidor SMTP (host) y el puerto siempre se especifican por separado, que por configuracion predeterminada son los siguientes:

    $mail->Host = localhost;
    $mail->Port = 25;

    Otro detalle es que en los codigos aqui posteados, se definen unas constantes que no son utilizadas, por ejemplo para el usuario, el pasword, el servidor, y el modo depuracion se definen MAILER_USER, MAILER_PASS, MAILER_HOST, MAILER_SMTP_DEBUG_LEVEL respectivamente, pero al procesar el envio se utilizan MAILER_SMTP_USER, MAILER_SMTP_PASS, MAILER_SMTP_HOST, MAILER_DEBUG_LEVEL.

    Esta clase PHPMailer es una exelente herramienta y muy Potente.

  10. #10
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    25
    Cita Iniciado por serverdns Ver Mensaje
    Me permito meter mi cuchara, para dar mi aporte, en mi experiencia con la clase PHPMailer el servidor SMTP (host) y el puerto siempre se especifican por separado, que por configuración predeterminada son los siguientes:

    $mail->Host = localhost;
    $mail->Port = 25;
    En realidad yo lo he probado de ambas formas y funciona en ambas, así que no perdemos nada con probar (@ignasigc, revisa el código más abajo).

    Cita Iniciado por serverdns Ver Mensaje
    Otro detalle es que en los codigos aqui posteados, se definen unas constantes que no son utilizadas, por ejemplo para el usuario, el pasword, el servidor, y el modo depuracion se definen MAILER_USER, MAILER_PASS, MAILER_HOST, MAILER_SMTP_DEBUG_LEVEL respectivamente, pero al procesar el envio se utilizan MAILER_SMTP_USER, MAILER_SMTP_PASS, MAILER_SMTP_HOST, MAILER_DEBUG_LEVEL.
    Debiste haber "metido tu cuchara" antes, jajajaja, así que gracias por la corrección.

    @ignasigc, reemplaza la función send_mail (todo el código de la función) por esto:

    Código:
    function send_mail( $params ) { 
      $return = ''; 
      ob_start(); 
             
      require_once "phpmailer/PHPMailerAutoload.php"; 
             
      $mail = new PHPMailer(); 
      $mail->Mailer             = MAILER_TRANSPORT; 
      $mail->SMTPDebug    = MAILER_DEBUG_LEVEL; 
      $mail->CharSet        = MAILER_CHARSET; 
      $mail->Host        = MAILER_SMTP_HOST; 
      $mail->Port             = MAILER_SMTP_PORT;
      $mail->SMTPAuth    = MAILER_SMTP_AUTH_ENABLED; 
      $mail->Username     = MAILER_USER; 
      $mail->Password    = MAILER_PASS; 
      $mail->SMTPSecure    = MAILER_SMTP_SECURITY; 
         
      $mail->From        = $params['from']; 
      $mail->FromName    = $params['fromName']; 
      $mail->AddReplyTo( $params['from'], $params['fromName'] ); 
      $mail->AddAddress( $params['to'] ); 
      $mail->WordWrap    = 70; 
      $mail->Subject         = $params['subject']; 
             
      if( isset( $params['html'] ) && $params['html'] === true ) 
        $mail->IsHTML( true ); 
         
      $mail->Body = $params['body']; 
    
      if( ! $mail->Send() ) { 
        $return = trim( $mail->ErrorInfo ); 
        $return .= "\nDebug PHPMailer:\n\n" . ob_get_contents(); 
      } 
    
      ob_end_clean(); 
             
      return $return; 
    }
    Modifica el archivo phpmailer-conf.php:

    Código:
    <?php
    define( 'MAILER_USER', 'info@kalcudoku.com' );
    define( 'MAILER_PASS', 'XXXXXXX' ); 
    define( 'MAILER_SMTP_HOST', 'euro1.ahwebhost.com' );
    define( 'MAILER_SMTP_PORT', 465 );
    define( 'MAILER_TRANSPORT', 'smtp' ); 
    define( 'MAILER_SMTP_SECURITY', 'ssl' );
    define( 'MAILER_SMTP_AUTH_ENABLED', true ); 
    define( 'MAILER_SMTP_DEBUG_LEVEL', 0 ); 
    define( 'MAILER_CHARSET', 'utf-8' ); 
    ?>
    Lo que está en rojo son las modificaciones que he hecho (gracias a @serverdns que notó los errores).

Temas Similares

  1. Dudas sobre el correo que me facilita el servidor.
    Por Jesus_Barba en el foro Hosting Gratuito CCTW
    Respuestas: 10
    Último Mensaje: 09/02/2014, 11:27
  2. Formulario de envio por correo electronico
    Por aorkis en el foro Formularios
    Respuestas: 13
    Último Mensaje: 25/07/2013, 14:41
  3. Formulario de envio de correo SMTP
    Por romero01 en el foro Formularios
    Respuestas: 0
    Último Mensaje: 04/04/2012, 13:43

Etiquetas para este Tema

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •