elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Funcion mail() error para ultimo argumento (return-path)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funcion mail() error para ultimo argumento (return-path)  (Leído 3,026 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Funcion mail() error para ultimo argumento (return-path)
« en: 13 Agosto 2010, 00:27 am »

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
  1. <?php
  2. if( isset($_POST["boton"]) && !strcmp($_POST["boton"], "Enviar") )
  3.   {
  4.   echo '<span>';
  5.   $boundary= md5(time()); //valor boundary
  6.   $htmlalt_boundary= $boundary. "_htmlalt"; //boundary suplementario
  7.   $subject=$_POST["asunto"];
  8.   $from= $_POST["from"];
  9.   $to= $_POST["to"];
  10.   # if( !empty($_POST["return_path]) ) )
  11.   $extra_arg= '-ferror@midominio.com';
  12.   # else      $extra_arg= NULL;
  13.  
  14.   //cabeceras para enviar correo en formato HTML
  15.   $headers = "MIME-Version: 1.0\r\n";
  16.   $headers .= "Content-Type: multipart/mixed; boundary=\"". $boundary. "\"\r\n"; //datos mixteados
  17.   $headers .= "From: ". $from. "\r\n"; //correo del que lo envia
  18.  
  19.   //incia cuerpo del mensaje que se visualiza
  20.   $cuerpo="--". $boundary. "\r\n";
  21.   $cuerpo .= "Content-Type: multipart/alternative; boundary=\"". $htmlalt_boundary. "\"\r\n\r\n"; //contenido alternativo: texto o html
  22.   $cuerpo .= "--". $htmlalt_boundary. "\r\n";
  23.   $cuerpo .= "Content-Type: text/html; charset=iso-8859-1\r\n";
  24.   $cuerpo .= "Content-Transfer-Encoding: 8bits\r\n\r\n";
  25.   $cuerpo .= $_POST["mensaje"];
  26.   $cuerpo .= "\r\n\r\n";
  27.   $cuerpo .= "--". $htmlalt_boundary. "--\r\n\r\n"; //fin cuerpo mensaje a mostrar
  28.   $cuerpo .= "--". $boundary. "--\r\n\r\n";
  29.  
  30.   if( mail($to, $subject, $cuerpo, $headers, $extra_arg) == FALSE )
  31.      echo 'Correo enviado con exito...';
  32.   else
  33.      echo 'Error al enviar...';
  34.   echo '</span>';
  35.   }
  36.  
  37. echo '<table>
  38. <form action="sendmail.php" method="POST">
  39. <td>From:</td><td><input type="text" name="from"></td><tr>
  40. <td>To:</td><td><input type="text" name="to"></td><tr>
  41. <td>Asunto:</td><td><input type="text" name="asunto"></td><tr>
  42. <td colspan="2">Mensaje:</td><tr>
  43. <td colspan="2"><textarea name="mensaje"></textarea></td><tr>
  44. <td colspan="2"><input type="submit" name="boton" value="Enviar"></td>
  45. </form>
  46. </table>';
  47. ?>

Saludos !


« Última modificación: 13 Agosto 2010, 01:21 am por Diabliyo » En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Funcion mail() error para ultimo argumento (return-path)
« Respuesta #1 en: 13 Agosto 2010, 01:18 am »

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 !


« Última modificación: 13 Agosto 2010, 18:28 pm por Diabliyo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines