Foros del Web » Programando para Internet » PHP »

Problemas para enviar un mail desde código PHP

Estas en el tema de Problemas para enviar un mail desde código PHP en el foro de PHP en Foros del Web. Bueno, después de un parón de 5 AÑOS!, vuelvo a este foro. He de decir que he entrado bastantes veces de manera anónima para ver ...
  #1 (permalink)  
Antiguo 21/10/2014, 06:05
 
Fecha de Ingreso: febrero-2009
Mensajes: 8
Antigüedad: 15 años, 2 meses
Puntos: 0
Problemas para enviar un mail desde código PHP

Bueno, después de un parón de 5 AÑOS!, vuelvo a este foro.

He de decir que he entrado bastantes veces de manera anónima para ver alguna de vuestras útiles soluciones .

Al grano... tengo un problema con la configuración que hace que un código PHP no tenga acceso a algún objeto, en concreto, pretendo enviar un mail, con el siguiente código:


<body>
<p><b>Dame t&uacute; opini&oacute;n</b></p>
<form name="datos" method="post" action="<?php echo $PHP_SELF; ?>">
Escribe tu direcci&oacute;n de email:<input type=’text’ name=’email’ /><br />
Ahora dame t&uacute; opini&oacute;n:<br />
<textarea name="opinion" cols="50" rows="5"></textarea><br />
<input type="submit" value="Enviar" />
</form>

<?php

$envio = "[email protected]"; //aqui va tu email

if (isset($_POST['email']) && $_POST['email'] != "" && $_POST['opinion'] != ""){/*Algo que debes de saber es que esta función sirve con ayuda de SMTP (protocolo para envío de emails) que se encuentran instalados en el servidor, sin el la función no va a funcionar.*/
if (mail($envio,"Aqui va el asunto",$_POST['opinion'],"Enviado por:".$_POST['email'])){//la función mail($to,$asunto,$mensaje)
echo "Gracias por tu opinion el correo ha sido enviado con &eacute;xito";
}else{
echo "Lo siento hubo un error al enviar el e-mail";
}
}
?>
</body>

------------------------------------------------------------------------------------------------
El tema es que me sale el siguiente mensaje cuando envío el formulario:

Acceso prohibido!

Usted no tiene permiso de accesar al objeto solicitado. El objeto está protegido contra lectura, o no puede ser leido por el servidor.

Si usted cree que esto es un error del servidor, por favor comuníqueselo al administrador del portal.

Error 403

localhost
Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.5.1

No me da ningún error al leer el código, lo he depurado todo... por otro lado uso el paquete xampp y el servidor de mail que tengo es el MERCURY, he comprobado que estaban todos en marcha desde el xampp control panel y a parte

En el Mércury tengo habilitados el servidor y cliente de SMTP y de POP3
En el servidor SMPT, los siguientes parámetros:
-Listen TCP/IP on port: 25
-IP interface tu use: 127.0.0.1
-En la pestaña de connection controll tengo la de permitir (allow) las direcciones de la 127.0.0.1 a 127.0.0.1 (o sea la de mi máquina)

En el servidor de POP3 tengo la siguiente configuración:
-Listen TCP/IP on port: 110
-IP interface tu use: 127.0.0.1
-En la pestaña de connection controll tengo la de permitir (allow) las direcciones de la 127.0.0.1 a 127.0.0.1 (o sea la de mi máquina)

En el cliente SMPT, la siguiente configuración:
-En 'smart host name' tengo: smtp.live.com
-En Connection port/type: 25
-EN Credentials for authentication, if required, he puesto mi mail ([email protected]) en el campo Login User Name y mi password
en el campo del password.



EN el cliente de POP3 he dejado el directorio de trabajo tal como estaba ya que no he modificado ni alterdo la locacalización
de ningún directorio desde la instalación


Por otro lado he modificao el archivo php.ini dejando la parte referente a e-mails como sigue (textualmente):
[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
SMTP = localhost
smtp_port = 25
sendmail_from = [email protected].

También he modificado los archivos httpd.conf y httpd-xampp.conf añadiendo lo siguiente entre cada etiqueta <Directory...>
</Directory>:
(textualmente)
#Cambiado 21/10/2014
Order allow,deny
Allow from all
#Cambiado 21/10/2014
Require all granted #donde antes en granted había denied

Al final del archivo httpd-xampp.conf lo he dejado como sigue
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalize r|server-status|server-info))">
#Cambiado 21/10/2014
#Require local
Require all granted
Order allow,deny
Allow from all
#Cambiado 21/10/2014
#ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>

Finalmente, he campiado el propietario del directorio superior del servidor XAMPP al del usuario con el que inicio sesión
a mi ordenador, dándole permisos totales...ya no se que más hacer...os agradecería vuestra ayuda
  #2 (permalink)  
Antiguo 21/10/2014, 06:43
 
Fecha de Ingreso: febrero-2009
Mensajes: 8
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas para enviar un mail desde código PHP

Vale!!, resulta que no tengo acceso al objeto $PHP_SELF, lo he cambiado por el propio nombre del archivo.php y parece que ya no me envía el mensaje de que no tengo acceso, la función
mail($envio,"Aqui va el asunto",$_POST['opinion'],"Enviado por:".$_POST['email'])
me devuelve true PERO, a mi correo no recibo un solo mail..
  #3 (permalink)  
Antiguo 21/10/2014, 06:45
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: Problemas para enviar un mail desde código PHP

Probá seteando cabeceras más completas:

Código PHP:
<?php
    $headers  
'MIME-Version: 1.0' "\r\n";
    
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
    
$headers .= 'From: MyCompany <[email protected]>' "\r\n";  
?>
  #4 (permalink)  
Antiguo 21/10/2014, 08:01
 
Fecha de Ingreso: febrero-2009
Mensajes: 8
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas para enviar un mail desde código PHP

He modificado el archivo php.ini
mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
SMTP = localhost
smtp_port = 25
;sendmail_from = [email protected]

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = postmaster@localhost

He anulado mi e-mail para enviar y he usado el postmaster@localhost
EN mi bandeja de entrada de hotmail ni en la de correo no deseado no hay nada...¿debería habilitar el SSL?..

Doy gracias de antemano por cualquier ayuda.
  #5 (permalink)  
Antiguo 21/10/2014, 08:15
 
Fecha de Ingreso: febrero-2009
Mensajes: 8
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas para enviar un mail desde código PHP

Gracias por tu aportación geekgirl, imagino que querías decir que añadiera el cuarto parámetro en función mail, es decir los "headers", he añadido lo que me has dado al final de la función mail.

Código PHP:
<?php
 $headers  
'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
$headers .= 'From: MyCompany <[email protected]>' "\r\n"

if (isset(
$_POST['email']) && isset($_POST['opinion']) && ($_POST['email'] != "") && ($_POST['opinion'] != "")){/*Algo que debes de saber es que esta función sirve con ayuda de SMTP (protocolo para envío de emails) que se encuentran instalados en el servidor, sin el la función no va  a funcionar.*/
    
if (mail($envio,"Aqui va el asunto",$_POST['opinion'],"Enviado por:".$_POST['email'], $headers)){//la función mail($to,$asunto,$mensaje)
        
echo "Gracias por tu opinion el correo ha sido enviado con &eacute;xito";
    }else{
        echo 
"Lo siento hubo un error al enviar el e-mail";
    }
?>

Pero nada, sigo sin recibir rien de rien
  #6 (permalink)  
Antiguo 21/10/2014, 08:53
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: Problemas para enviar un mail desde código PHP

Pasa que estás pasando 5 parámetros y los headers la función espera recibirlos en el 4to. Mandalo así:

Código PHP:
<?php
mail
($envio,"Aqui va el asunto",$_POST['opinion'],$headers);
?>
La variable donde te llega el mail por $_POST, simplemente incorporala en el espacio de los headers donde figura un mail de ejemplo.
  #7 (permalink)  
Antiguo 21/10/2014, 14:24
 
Fecha de Ingreso: febrero-2009
Mensajes: 8
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas para enviar un mail desde código PHP

Cita:
Iniciado por GeekGirl Ver Mensaje
Pasa que estás pasando 5 parámetros y los headers la función espera recibirlos en el 4to. Mandalo así:

Código PHP:
<?php
mail
($envio,"Aqui va el asunto",$_POST['opinion'],$headers);
?>
La variable donde te llega el mail por $_POST, simplemente incorporala en el espacio de los headers donde figura un mail de ejemplo.

Es verdad...
Pero nada, lo he corregido y a hotmail no llega, no se si abrirme una cuenta en gmail para usar su servidor smtp para configurar mi cliente smpt y en vez de usar el smtp.live.com, uso el smpt.gmail.com.....alomejor tengo que cambiar el puerto del 25 al 587, nu se, ire probando, por ahora nada
  #8 (permalink)  
Antiguo 21/10/2014, 14:25
 
Fecha de Ingreso: febrero-2009
Mensajes: 8
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas para enviar un mail desde código PHP

tambien me da error al enviar mail si lo envío desde el admin del Mercury

Etiquetas: formulario, html, mail
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:28.