Funcion mail() error para ultimo argumento (return-path)

Iniciado por Diabliyo, 13 Agosto 2010, 00:27 AM

0 Miembros y 1 Visitante están viendo este tema.

Diabliyo

Buenas.

Tengo un servidor dedicad en donde estoy configurando un sistema personalizado de envío de mails, el sistema básicamente utiliza la función mail() para enviar los correos.

El Servidor dedicado esta corriendo sobre GNU/Linux y tengo los siguientes deamons corriendo:

  • postfix  - Servidor SMTP.
  • dovecot - IMAP, POP.
  • salsauthd - Autentificacion.
  • dkim-milter - Firma de Dominio que se integra como cabecera extra en los mails (DKIM).
  • Apache+PHP+Mysql - Servidor HTTP con soporte PHP, MySQL.

    Por lo general si se arma un mail en PHP y se envian los parametros basicos: mail($to, $subject, $cuerpo, $headers ) por defecto postfix (servidor SMTP) coloca automaticamente la cabecera Return-Path como: apache@hostname.dominio, pero yo quiero que aparezca la direccion del mail del que esta enviando el correo.

    La opcion que encontre, es simplemente agregando una argumento extra a la funcion mail(), quedando asi: mail($to, $subject, $cuerpo, $headers, $extra_arg).

    En donde $extra_arg, puede ser: $extra_arg= '-f'. $from; (-fELCORREO@DOMINIO.COM).

    Pero por razones que desconozco (o por el estres que traigo encima) mi pequeño script Sendmail.php (que tengo de prueba), al momento de establecer el Return-Path en el INPUT TEXT, simplemente se queda en blanco todo, vaya, no sale el mensaje que si se envio o no el correo :(.

    Por otro lado, si omito pasarle a la funcion mail() el argumento extra, este procesa perfecto, se envia el mail y efectivamente llega... Pero el Return-Path esta como NO lo quiero.

    Aqui script:

    Código (php) [Seleccionar]
    <?php
    if( isset($_POST["boton"]) && !strcmp($_POST["boton"], "Enviar") )
       {
       echo 
    '<span>';
       
    $boundarymd5(time()); //valor boundary
       
    $htmlalt_boundary$boundary"_htmlalt"//boundary suplementario
       
    $subject=$_POST["asunto"];
       
    $from$_POST["from"];
       
    $to$_POST["to"];
       
    # if( !empty($_POST["return_path]) ) )
       
    $extra_arg'-ferror@midominio.com';
       
    # else      $extra_arg= NULL;

       //cabeceras para enviar correo en formato HTML
       
    $headers "MIME-Version: 1.0\r\n";
       
    $headers .= "Content-Type: multipart/mixed; boundary=\""$boundary"\"\r\n"//datos mixteados
       
    $headers .= "From: "$from"\r\n"//correo del que lo envia

       //incia cuerpo del mensaje que se visualiza
       
    $cuerpo="--"$boundary"\r\n";
       
    $cuerpo .= "Content-Type: multipart/alternative; boundary=\""$htmlalt_boundary"\"\r\n\r\n"//contenido alternativo: texto o html
       
    $cuerpo .= "--"$htmlalt_boundary"\r\n";
       
    $cuerpo .= "Content-Type: text/html; charset=iso-8859-1\r\n";
       
    $cuerpo .= "Content-Transfer-Encoding: 8bits\r\n\r\n";
       
    $cuerpo .= $_POST["mensaje"];
       
    $cuerpo .= "\r\n\r\n";
       
    $cuerpo .= "--"$htmlalt_boundary"--\r\n\r\n"//fin cuerpo mensaje a mostrar
       
    $cuerpo .= "--"$boundary"--\r\n\r\n";

       if( 
    mail($to$subject$cuerpo$headers$extra_arg) == FALSE )
          echo 
    'Correo enviado con exito...';
       else
          echo 
    'Error al enviar...';
       echo 
    '</span>';
       }
       
    echo 
    '<table>
    <form action="sendmail.php" method="POST">
    <td>From:</td><td><input type="text" name="from"></td><tr>
    <td>To:</td><td><input type="text" name="to"></td><tr>
    <td>Asunto:</td><td><input type="text" name="asunto"></td><tr>
    <td colspan="2">Mensaje:</td><tr>
    <td colspan="2"><textarea name="mensaje"></textarea></td><tr>
    <td colspan="2"><input type="submit" name="boton" value="Enviar"></td>
    </form>
    </table>'
    ;
    ?>


    Saludos !

Diabliyo

#1
Listo el script Sendmail.php tenia un error de sintaxis, tenia escrito emtpy en vez de empty, ya con eso salen con el Return-Path personalizado.

Saludos !