Foros del Web » Programando para Internet » PHP »

mail()+php+suexec

Estas en el tema de mail()+php+suexec en el foro de PHP en Foros del Web. Hola, He leido en muchos sitios que la suexec permite conocer que usuario realiza tales procesos y un etc. La cosa es que en un ...
  #1 (permalink)  
Antiguo 17/07/2006, 23:44
 
Fecha de Ingreso: julio-2006
Mensajes: 22
Antigüedad: 11 años, 4 meses
Puntos: 0
mail()+php+suexec

Hola,

He leido en muchos sitios que la suexec permite conocer que usuario realiza tales procesos y un etc.

La cosa es que en un hosting la función mail() de php está activada internamente llegan sin problemas (al mismo dominio) pero a dominios externos al servidor no llegan, y cuando los usuarios se registran en la página tengo programado para que envíe un email de bienvenida (el cual jamás llega). Lo único que me dicen en el soporte es que utilice SuExex o phpsuexec.

¿como se usa suexec o php suexec o como sea para que mail($mail, $asunto, $mensaje, $cabeceras); funcione?
  #2 (permalink)  
Antiguo 18/07/2006, 09:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te podrían dar algún ejemplo más concreto.

En principio se supone que tu servidor usa o está configurado como "PHPsuexec" .. esto implica que PHP se ejecuta como un CGI en el aspecto de que usuario usa para "aparecer" cara al Sistema Operativo .. normalmente "nobody".

La validación que hace el servidor de correo es de "quien" envia el correo .. si el "FROM" no se usa un usuario válido de ese servidor de correo (o por otro lado lo chequea), son rechazados. Si el "FROM" (que indicas en las $cabeceras) no es correcto o no lo indicas .. apareceras como "nobody" (usuario no valido o creado en ese servidor de correo lo más probable).

Intenta definir una cabecer FROM en tu e-mail que indique una dirección de e-mail válida en ese servidor (una tuya de tu dominio) .. pruebalo.

Sino, tendrás que "cambiarte" de usuario para ejecutar la función mail() .. para eso emplearías "sudo"

En otros sitios se habla de configurar tu servidor de correo (por cierto . cual usan: Exim? .. otro?) si es que tienes acceso a su configuración (desde un panel de control de tu servicio de hosting):

http://vpstalk.net/showpost.php?p=7202&postcount=15

Otra cosa que puedes hacer es usar:

PHPMailer
http://phpmailer.sourceforge.net

Enviar el e-mail por SMTP directo por tu própio servidor SMTP o el mismo de tu proveedor si es que lo permite usando cierta cuenta de correo (tuya) y autentificandote (esa classe permite autentificación).

De echo este método como veras es una amplia mejora al comando "mail()" de PHP .. y suele solventar los problemas de envio de e-mails pues la conexión se hace directa por "sockets" .. Es decir, se usa autentificación .. tal cual lo enviases con un cliente de correo cualquiera (Outlook .. etc ..).

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, 11:50
 
Fecha de Ingreso: julio-2006
Mensajes: 22
Antigüedad: 11 años, 4 meses
Puntos: 0
Hola y gracias por tu ayuda. Sin embargo acotaré algunas cosas respecto de tus comentarios:

Cita:
Te podrían dar algún ejemplo más concreto.
Lo mismo digo yo, pero pocos proveedores de hosting dan soporte para php. Hay que pagar un poco más, pero ayudan en serio.

Cita:
En principio se supone que tu servidor usa
o está configurado como "PHPsuexec" .. esto
implica que PHP se ejecuta como un CGI en el
aspecto de que usuario usa para "aparecer"
cara al Sistema Operativo .. normalmente
"nobody".
Lo mismo quice explicar al comienzo.

Cita:
La validación que hace el servidor de
correo es de "quien" envia el correo .. si el
"FROM" no se usa un usuario válido de ese
servidor de correo (o por otro lado lo chequea),
son rechazados. Si el "FROM" (que indicas en
las $cabeceras) no es correcto o no lo indicas ..
apareceras como "nobody" (usuario no valido o
creado en ese servidor de correo lo más probable).

Intenta definir una cabecer FROM en tu e-mail
que indique una dirección de e-mail válida en
ese servidor (una tuya de tu dominio) ..
pruebalo.
Siempre lo he hecho así, aquí va el código 1:
Código PHP:
<?php
mail
("[email protected]""Bienvenido a ...""Gracias por registrarse en ...""From: [email protected]\r\n" "Reply-To: [email protected]\r\n" "X-Mailer: PHP/" phpversion())
?>
Y acá el código 2:
Código PHP:
$correo '[email protected]';
$msg '<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>

</head>
<body>Gracias por registrarse en...
</body>
</html>'
;
$asunto 'Bienvenido a ...';
$cabeceras  'MIME-Version: 1.0' "\r\n";
$cabeceras .= 'Content-type: text/html; charset=UTF-8' "\r\n";
$cabeceras .= 'From: [email protected]"\r\n";
mail($correo$asunto$msg$cabeceras);
?> 
He omitido el resto del código de la página dinámica

Cita:
Sino, tendrás que "cambiarte" de
usuario para ejecutar la función mail() ..
para eso emplearías "sudo"

En otros sitios se habla de configurar tu
servidor de correo (por cierto . cual usan:
Exim? .. otro?) si es que tienes acceso a
su configuración (desde un panel de
control de tu servicio de hosting):
No tengo acceso...

Cita:
PHPMailer

Enviar el e-mail por SMTP directo por tu
própio servidor SMTP o el mismo de tu
proveedor si es que lo permite usando cierta
cuenta de correo (tuya) y autentificandote
(esa classe permite autentificación).

De echo este método como veras es una
amplia mejora al comando "mail()" de PHP ..
y suele solventar los problemas de envio de
e-mails pues la conexión se hace directa por
"sockets" .. Es decir, se usa autentificación ..
tal cual lo enviases con un cliente de correo
cualquiera (Outlook .. etc ..).
Aún no lo pruebo, espero que funcione en el servidor para enviar el maldito mensaje automático de registro, si no puedo automatizar los procesos, me muero ya que el tiempo es oro...

Última edición por Cluster; 18/07/2006 a las 12:04
  #4 (permalink)  
Antiguo 18/07/2006, 12:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok, .. prueba PHP Mailer y nos comentas.

Las otras soluciones .. por lo que he visto (no tengo experiencia directa con ese tipo de problemas) .. muchas pasa por configuración del servidor (al menos un .htaccess o php.ini própio) .. Tendrías que concretar (aunque tengas que paga$$r por el servicio) que debes hacer en tu caso concreto ...

Nota: Usa "[quote ]" .. para las referencias a texto de otro tema .. Y [php ] para colocar código PHP .. así se verá como lo observas (más ordenado y legible).

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 04/08/2006, 22:58
 
Fecha de Ingreso: julio-2006
Mensajes: 22
Antigüedad: 11 años, 4 meses
Puntos: 0
No es lo que andaba buscando.

Maldición moriré, si lo único que necesito es enviar un email con un código de autorización al momento que el usuario se registra, pero como el servidor tiene suexec instalado, no envía el mensaje con mail($mail, $asunto, $mensaje, $from);

Ya no sé que hacer, he probado todo, los permisos, el httaccess, y nada.
No es gracioso que el usuario se registre y me llegue un mail a mi el cual yo tenga que reenviar (porque internamente mail() funciona perfecto) pero hacia el exterior no funciona.
  #6 (permalink)  
Antiguo 05/08/2006, 12:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
¿Y no probastes PHPMailer? para enviar tu e-mail por SMTP directo sin pasar por la configuraciòn de PHP .. tal cual si lo hiciersa con un cliente de correo cualquiera configurado (donde usarías cualquier cuenta de correo definida y autentificada de ese servidor).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 09/08/2006, 11:45
 
Fecha de Ingreso: julio-2006
Mensajes: 22
Antigüedad: 11 años, 4 meses
Puntos: 0
Por supuesto que sí, pero salió un sin número de errores al abrir el socket (en el test)

Seguiré mi búsqueda...
  #8 (permalink)  
Antiguo 09/08/2006, 11:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por maoc Ver Mensaje
Por supuesto que sí, pero salió un sin número de errores al abrir el socket (en el test)

Seguiré mi búsqueda...
Si expones los mensajes de error tal vez podramos ayudarte por ahí ... Muchas veces el "primer" mensaje de error deriva el resto de errores .. así que no te "asustes por la cantidad" sino por el "primero".

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 07:59.