Foros del Web » Programando para Internet » PHP »

QK smtp Server 3 y como enviar emails con php

Estas en el tema de QK smtp Server 3 y como enviar emails con php en el foro de PHP en Foros del Web. Hola buenas: He instalado este programa para poder probar el envío de correos pero no sé si tengo que configurarlo de alguna forma. Pruebo algún ...
  #1 (permalink)  
Antiguo 18/07/2006, 10:03
 
Fecha de Ingreso: noviembre-2005
Mensajes: 312
Antigüedad: 18 años, 5 meses
Puntos: 1
QK smtp Server 3 y como enviar emails con php

Hola buenas:

He instalado este programa para poder probar el envío de correos pero no sé si tengo que configurarlo de alguna forma. Pruebo algún código en php usando la función típica de mail y haciendo una prueba me sale un error como éste:

Forbidden
You don't have permission to access /Unaluna/html/<br /><b>Notice</b>: Undefined variable: PHP_SELF in <b>d:\unaluna ediciones\html\contacto.php</b> on line <b>187</b><br /> on this server.

Apache/1.3.33 Server at localhost Port 80

y quería saber cual puede ser el problema. La página en concreto es la típica de contacto con un simple formulario y hago que esa página sea también donde se muestra el formulario y donde se envía el mensaje haciendo una comprobación como la de <?php if (!$_POST) ... En action lo que hago es poner action="<?php echo $PHP_SELF ?> y no entiendo porque me da error en esa variable. Uso también el EasyPHP con Apache.

Espero que podais orientarme.

Un saludo y gracias.
  #2 (permalink)  
Antiguo 18/07/2006, 10:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Debes acceder a variables externas de tu script con sus arrays supeglobales ..

No puedes acceder más a $PHP_SELF así (o no es nada recomendable pese que se puede cambiar por "cierta" directiva de PHP que no viene al caso, trabaja como está ahora).

El "aviso" que te dá PHP es por el nivel de errores que presenta (que está "alto") .. esto se puede cambiar por tu php.ini directiva:

error_reporting (o función de mismo nombre).

Pero el problema principal y su solución es que accedas por:

$_SERVER['PHP_SELF']

Te recomiendo que indiques el código completo que usas .. por qué supongo que tendrás más problemas de este estilo ...

Por cierto, el problema no tiene nada que ver con el envio del e-mail en sí ni tiene relación directa si instalastes PHP bajo "EasyPHP" .. intenta referirte a PHP y tal versión y revisar su configuración (php.ini) .. es lo mejor.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 18/07/2006, 12:07
 
Fecha de Ingreso: noviembre-2005
Mensajes: 312
Antigüedad: 18 años, 5 meses
Puntos: 1
Hola Cluster:

Gracias por responder. Pues efectivamente me olvidé del $_SERVER. Igual con las prisas no caí en la cuenta o igual el código en el que me inspiré no lo llevaba escrito por error. El caso es que no me ha dado error aunque de momento no he recibido el mensaje de prueba, con lo que no sé si realmente se ha enviado o no el mensaje. Miraré la cláusula que dices y aquí te remito el código simple que uso:

El código corresponde a la parte en la que se supone que han mandado datos con el formulario. Lo que hago es:

<?php
if (!$_POST) {
?>
Y muestro el formulario y demás.
<?php
}
else {
$asunto = $_POST["asunto"];
$cuerpo = "Mensaje enviado por: \n";
$cuerpo .= "Nombre: " . $_POST["nombre"] . "\n";
$cuerpo .= "Email: " . $_POST["email"] . "\n";
$cuerpo .= "Comentarios: " . $_POST["comentarios"] . "\n";

//ini_set();
// Función para enviar el correo con los datos del formulario.
mail("email", $asunto, $cuerpo);

// Doy las gracias por el envío
echo "<h1>Contacto</h1><p>Gracias por contactar con nosotros. Responderemos a su petición lo antes posible.</p>";
}
?>

Donde email es la dirección que pongo para hacer las pruebas, la pongo a pelo vamos, da igual cual sea porque uso uno de prueba y luego pondré la buena.

Y eso es todo creo. Miraré la directiva que dices y en cualquier caso a ver si recibo los mensajes de prueba. Por los mensajes que muestra el servidor parece que se han enviado correctamente.

Un saludo y gracias de nuevo.
  #4 (permalink)  
Antiguo 18/07/2006, 15:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Una recomendación ..

No muestres el mensaje de error o exito en el mismo proceso que envias el e-mail (usas mail()) .. Fijate que si "recargas" la página (tantas veces como el usuario mal-intencionado le dé la gana) se van a enviar N e-mails repetidos ...

Es recomendable que redirecciones a otro script cuando termine el proceso (sea bueno o malo la ejecución):

Código PHP:
If (mail(...)){
  
header("Location: exito.php");
  exit;
} else {
  
header("Location: error.php");
  exit;

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 19/07/2006, 01:42
 
Fecha de Ingreso: noviembre-2005
Mensajes: 312
Antigüedad: 18 años, 5 meses
Puntos: 1
Hola Cluster:

Tendré en cuenta tu sugerencia. El código tal y como está lo cogí de cuando usaba el asp y ví códigos como el que he puesto pero no había caído en eso de que a alguien le puede dar por actualizar la página porque sí. Ya lo corregiré.

Lo que me mosquea es que el servidor smtp no parece darme ningún error al mandar mensajes de prueba pero es que aún no he recibido ninguno en la cuenta de correo que puse de prueba. ¿Es normal o es cuestión de preocuparse?. No sé, o igual es que hay algo que sigo haciendo mal.

Un saludo y gracias de nuevo.
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 00:53.