Foros del Web » Programando para Internet » PHP »

Internal Server Error al enviar un email al dominio gemail.com??

Estas en el tema de Internal Server Error al enviar un email al dominio gemail.com?? en el foro de PHP en Foros del Web. Buenas, Tengo un sistema elemental de lista de correo programada en PHP. Al sistema lo he utilizado en varios proyectos distribuidos en varios servidores diferentes ...
  #1 (permalink)  
Antiguo 20/03/2009, 10:28
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Internal Server Error al enviar un email al dominio gemail.com??

Buenas,
Tengo un sistema elemental de lista de correo programada en PHP. Al sistema lo he utilizado en varios proyectos distribuidos en varios servidores diferentes y nunca me dio problemas. Bueno, al menos hasta ahora.
Resulta que ayer recibi un email de un cliente diciendo que cuando queria enviar emails a la lista le daba un error "500 Internal Server Error" y haciendo pruebas para ver que podia ser me encontre con la increible situacion de que el problema lo causaba una direccion de email "abc@gemail.com". Asi como lo oyen, si dentro de todos los emails que se tienen que enviar, figura algun direccion cuyo servidor es "gemail.com" el server lanza un error 500.
Hice cientos de prueba y solo sacando ese mail la aplicacion deja de dar error. De hecho he añadido direcciones de emails obviamente inexistentes del tipo "[email protected]" y el envio se realiza perfectamente. Pero si vuelvo a agregar una direccion cualquiera con el dominio gemail.com vuelve a tirar el mismo error (por mas que cambie la cuenta).
Ante esta bizarra situacion envie un email al soporte del servidor (el poco recomendable Arsys) y su increible respuesta fue:

Cita:
En relación a su consulta indicarle que se han realizado distintos envíos desde la función mail de php hacia cuentas del tipo @gemail.com reportando en todos los casos el error 500 puesto que es una dirección incorrecta.
Pese a que yo no se nada de servidrores estoy seguro que esto no es asi, primero por que si asi fuera cuando yo intento enviar un mail a "[email protected]" tambien me deberia dar un error 500 y segundo porque si la funcion mail() de php devolviera un error cuando se intenta enviar un mail a un dominio incorrecto (cosa que estoy 99,99% seguro que no hace) el error deberia ser de PHP y no de Apache (de hecho lo que haria seria devolver false en vez de true y nunca dar un error y muchos menos uno 500).

¿Alguien tiene algun tipo de idea de lo que puede estar sucediendo?

Este es el codigo (simplificado) de la seccion del script donde se envian los mails (uso la clase PHPmailer):

Código PHP:
$mail = new PHPMailer();
$mail->From       "[email protected]";
$mail->FromName   "Abc.es";
$mail->Subject    "Abc.es - News";
$body             $mail->getFile('mailing.html');
$body             eregi_replace("[\]",'',$body);
$mail->MsgHTML($body);

$log '';
while(
$rs=mysql_fetch_array($sql_final)){
    
$mail->AddAddress(trim($rs['mail']), "");
    if(!
$mail->Send()) {
      
$log .= "Mailer Error: ".$rs['mail']." - " $mail->ErrorInfo;
    } else {
      
$log .= "Message sent: ".$rs['mail'];
    }
}
echo 
$log
__________________
oohh... quisiera ser godines!!!
  #2 (permalink)  
Antiguo 20/03/2009, 11:29
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Internal Server Error al enviar un email al dominio gemail.com??

la dirección correcta no será @gmail.com sin la e???

Saludos!!
  #3 (permalink)  
Antiguo 20/03/2009, 12:17
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Internal Server Error al enviar un email al dominio gemail.com??

safe:

Cita:
Ante esta bizarra situacion envie un email al soporte del servidor (el poco recomendable Arsys) y su increible respuesta fue:
En esa respuesta NO hay nada bizarro.

gemail.com es un dominio debidamente registrado por ->
Cita:
Registrant:
Easylink Services Corporation
Easylink Services Corporation
33 Knightsbridge Road
Piscataway, NJ 08854
US
Email: [email protected]

Registrar Name....: CORPORATE DOMAINS, INC.
Registrar Whois...: whois.corporatedomains.com
Registrar Homepage: www.cscprotectsbrands.com

Domain Name: gemail.com
Probablemente elllos tienen algun servidor de correo instalado en ese dominio, por ello la respuesta 500 que significa que hubo conexion pero fue rechazada probablemente porque el usuario no existe.

Cita:
Pese a que yo no se nada de servidrores estoy seguro que esto no es asi, primero por que si asi fuera cuando yo intento enviar un mail a "[email protected]" tambien me deberia dar un error 500 y segundo porque si la funcion mail() de php devolviera un error cuando se intenta enviar un mail a un dominio incorrecto (cosa que estoy 99,99% seguro que no hace) el error deberia ser de PHP y no de Apache (de hecho lo que haria seria devolver false en vez de true y nunca dar un error y muchos menos uno 500).
Apache nada tiene que ver con esto.
Y los errores 500 no son recibidos por el codigo que utiliza la funcion mail() sino que las recibe el servidor de correo y algun admin correo es notificado.
El proceso es el siguiente ->
La funcion mail() entrega el correo a un servidor de correo predeterminado. Si el destino es [email protected]
El servedor revisa que contenga @ y un . y que sea com, net, org, etc
y si cumple lo acepta para envio; si el dominio NO existe entonces
el servidor de correo o el admin del servidor recibe el rechazo del correo consecuencia del dominio que no existe (500) y desde tu codigo php que utilizo la funcion mail() para enviar no tiene forma de saber que paso exactamente.
El otro punto medular es que el error 500 no viene solo sino que siempre se le adjunta ena explicacion detallada del porque del rechazo.

Saludos
Y espero te ayude
Franco
  #4 (permalink)  
Antiguo 22/03/2009, 20:41
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Respuesta: Internal Server Error al enviar un email al dominio gemail.com??

Gracias por la completa respuesta Franco190453. Igual hay cosas que sigo si entender.
Tu dices lo siguiente

Cita:
Iniciado por franco190453 Ver Mensaje
si el dominio NO existe entonces el servidor de correo o el admin del servidor recibe el rechazo del correo consecuencia del dominio que no existe (500) y desde tu codigo php que utilizo la funcion mail() para enviar no tiene forma de saber que paso exactamente.
No me queda claro si te has confundido y en vez de "dominio" has querido decir "cuenta". Porque como has dicho, el dominio existe y ademas si mando un mail a un dominio que si NO existe el servidor no me devuelve el error. Y si has querido decir cuenta ¿entonces porque si envio un mail a una cuenta de gmail o hotmail que tampoco existe no me da el mismo error?

Por otro lado dices:
Cita:
El otro punto medular es que el error 500 no viene solo sino que siempre se le adjunta ena explicacion detallada del porque del rechazo.
Por lo que entiendo allí, el que devuelve el error 500 (junto a la explicación del porque del rechazo) es el servidor al que le envío el email, pero en este caso es mi servidor el que el error 500 ¿quieres decir que el comportamiento normal es que un servidor de un Internal Server Error cada vez que envia un email a una cuenta inexistente?

Saludos y nuevamente gracias por tu ayuda.
__________________
oohh... quisiera ser godines!!!
  #5 (permalink)  
Antiguo 23/03/2009, 10:31
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Internal Server Error al enviar un email al dominio gemail.com??

safe:
Cita:
Al sistema lo he utilizado en varios proyectos distribuidos en varios servidores diferentes y nunca me dio problemas
Para mi esto descarta toda posibilidad que tu codigo tenga errores;
en otras palabras el codigo esta bien.

Cita:
he añadido direcciones de emails obviamente inexistentes del tipo "[email protected]" y el envio se realiza perfectamente
Esto me hace sentido y concuerda con lo que te explique que la funcion mail() la entrega sin novedad pero el correo NO llegara a su destino por cuanto el dominio es inexistente; pero el error sera recibido por el servidor de correo que envia; es decir cuando trata de buscar via el servidor de dns el dominio no lo encuentra y sale el error y para el proceso.

Cita:
En relación a su consulta indicarle que se han realizado distintos envíos desde la función mail de php hacia cuentas del tipo @gemail.com reportando en todos los casos el error 500 puesto que es una dirección incorrecta.
Esta respuesta de arsys.es es congruente y no tiene nada de bizarro, puesto que el dominio existe pero talvez el dominio no tiene ningun usuario con x nombre y rechaza el correo; hasta aqui todo bien y
de acuerdo a lo normal y esperado.

Cita:
Resulta que ayer recibi un email de un cliente diciendo que cuando queria enviar emails a la lista le daba un error "500 Internal Server Error" y haciendo pruebas para ver que podia ser me encontre con la increible situacion de que el problema lo causaba una direccion de email "[email protected]".
Aqui esta el problema y no me queda mas que decir que pareciera que la aplicacion tiene problemas; pero como dices que ya ha funcionado bien, entonces todo se contradice y confunde.

Solo puedo darte un poco de mas detalles sobre el proceso y quedo completamente confundido cuando dices que tu cliente es el que recibe el error; y lo unico que NO me queda claro es que si el INTERNAL SERVER ERROR se refiere al Sistema Operativo de tu cliente o al servidor; o el sistema operativo de tu cliente tiene problemas con la aplicacion.

Finalmente, podria ser que la aplicacion busca los records MX del dominio
y se confunde.
Puedo decir lo siguiente:
La direccion inexistente y por ende el usuario inexistente implica una consulta dns que reporta un dominio que no existe y se detiene la consulta.
En cambio en el caso de gemail.com implica una consulta de dominio que si existe y MX records que no existen y por ende un usuario que no existe; Aqui parece estar el problema de la aplicacion y NO de la funcion mail() ni de los servidores de correo.

Saludos
Muy interesante tu post
Y espero lo resuelvas favorablemente.
Franco

P.S. Creo debes profundizar un poco mas como maneja la aplicacion el envio de correos!.
  #6 (permalink)  
Antiguo 26/03/2009, 16:33
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Respuesta: Internal Server Error al enviar un email al dominio gemail.com??

Hola y gracias nuevamente franco190453,

Creo que no te queda claro a que me refiero con que el servidor devuelve un error 500. Voy a intentar explicarlo mediante un ejemplo sencillo.

Suponte que yo tengo un archivo llamado enviar.php y adentro de ese archivo tengo el siguiente codigo:

Código PHP:
<?php
$para      
'[email protected]';
$asunto    'el asunto';
$mensaje   'hola';
$cabeceras 'From: [email protected]"\r\n" .
    
'Reply-To: [email protected]"\r\n" .
    
'X-Mailer: PHP/' phpversion();

if(
mail($para$asunto$mensaje$cabeceras)) {
    echo 
"OK";
}
else {
    echo 
"Error!";
}
?>
si yo ingreso a la URL www.miservidor.com/enviar.php se ejecuta el script, se envia el email y se muestra el mensaje "OK" (o "Error!" si dentro de $para utilice caracteres prohibidos). Eso no es mas que el comportamiento normal, o no?
Ahora bien, si por casualidad cambio:

$para = '[email protected]';

por

$para = '[email protected]';

cuando ingreso a www.miservidor.com/enviar.php mi servidor se queda "pensando" unos minutos (literalmente) y de golpe aparece el siguiente mensaje:

Cita:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Osea, el que da el error es el servidor donde yo tengo alojado el sitio web y desde el cual quiero enviar los emails. Lo que no se, es el porque se produce ese error. ¿Puede ser que se produzca porque el servidor al que le intento enviar el mail me devuelve un error? si es eso, me parece un comportamiento muy mal pensado, ya que al ser un error de servidor, y no de PHP, no tengo ninguna manera de "atraparlo" y/o "rescatarlo".
__________________
oohh... quisiera ser godines!!!
  #7 (permalink)  
Antiguo 26/03/2009, 20:04
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Internal Server Error al enviar un email al dominio gemail.com??

safe:

Te pido disculpas y ahora si veo mas claramente que es lo que esta pasando.
Pero bueno, NO lo habias explicado con esa claridad antes!.

Cita:
$para = '[email protected]';

por

$para = '[email protected]';
Analizando mas a fondo tu caso la clave esta en
la diferencia existente entre esas dos direcciones de correo.

1.- Ambos son dominios debidamente inscritos y revisados por mi persona
de que existen, muy especialmente el caso de gemail.com
Esto descarta cualquier posibilidad que el dominio sea el problema.

2.- El usuario no existe en ambas direcciones y por tanto no se debe al
usuario la causa de esta respuesta.
Esto descarta totalmente al usuario como causante de tal conducta
del servidor.

3.- La unica diferencia entre ambos dominios, segun whois y dnsstuff.com
es que hotmail.com tiene MX records; estos son utilizados por los servidores de correo PERO gemail.com NO tiene MX records.

Probablemente y ahora si que estoy casi seguro el servidor de correo solicita al servidor de dns, que debiera estar en el mismo hosting por los MX records para asi proceder con el envio y logicamente el servidor de dns NO responde por NO existir y se trunca o corta el proceso provocando un error del servidor web.
Ahora, haciendo mis pruebas con mi servidor de correo y utilizando literalmente las direcciones que tu pusistes arriba; yo NO obtuve ninguna respuesta anormal; en ambos casos mi codigo o script envio y en el servidor de correo sale un failed para ambos y una respuesta inmediata al administrador del servidor indicando que ambos correos NO se entregaron por xyz razones.
Esto es congruente con mis explicaciones anteriores y corroboran la veracidad y autenticidad de mis explicaciones anteriores

Conclusion, el servidor de correo de tu hosting o el que tu utilizas o tu cliente utiliza esta teniendo problemas con el servidor web por efecto directo de los MX records y el servidor de dns que utilizan.
Sin duda alguna el servidor de correo o el servidor web no es de buena calidad ni cumple con los
estandares para servidores y pareciera que por ello es que hay tantos problemas con los correos y debemos siempre seleccionar servidores que verdaderamente esten bien diseñados y cumplan con las especificaciones establecidas.
finalmente, no me queda ni la mas minima duda que hay servidores que literalmente no son del todo aceptables.
Bueno seria saber el nombre especifico del servidor de correo y servidor web que utilizan tu hosting o cliente para enviar correos y manejar paginas web ya que seria una opcion a descartar.

Saludos
Y muchas gracias por tu explicacion y siento
haber aprendido un poco mas
Y espero te ayude mis comentarios
Franco

Última edición por franco190453; 26/03/2009 a las 20:12
  #8 (permalink)  
Antiguo 01/04/2009, 11:51
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Respuesta: Internal Server Error al enviar un email al dominio gemail.com??

Bueno, muchisimas gracias por tu ayuda franco190453! toda la información me ha sido de mucha ayuda.
__________________
oohh... quisiera ser godines!!!
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 04:53.