Foros del Web » Programando para Internet » PHP »

Enviar correo desde PHP con SMTP externo

Estas en el tema de Enviar correo desde PHP con SMTP externo en el foro de PHP en Foros del Web. Buenas tardes, mi consulta es la siguiente: Tengo un sistema en PHP con soporte para 2 idiomas, así como la empresa decidió tener 2 sitios ...
  #1 (permalink)  
Antiguo 26/01/2010, 15:14
Avatar de rfadgrmm  
Fecha de Ingreso: junio-2009
Mensajes: 74
Antigüedad: 14 años, 10 meses
Puntos: 1
Información Enviar correo desde PHP con SMTP externo

Buenas tardes, mi consulta es la siguiente:

Tengo un sistema en PHP con soporte para 2 idiomas, así como la empresa decidió tener 2 sitios web: www.a.com (Inglés) y www.b.com (Español). El sistema está alojado en www.a.com, y puedo enviar correos usando el dominio @a.com. Ahora, sucede que un cliente me escribe desde www.b.com y le van a responder con el correo en el dominio @b.com, pero por alguna razón no puedo conectarme al servidor SMTP de www.b.com estando desde www.a.com. Actualmente uso el PHPmailer para facilitar las cosas en materia de configuración. Aquí les dejo el código fuente para su revisión y si alguien me puede decir que puedo estar haciendo mal:

Nota: www.a.com está en Estados Unidos, y www.b.com se encuentra en España, lo menciono ya que muchos pensaron que los dominios están comprados a un mismo proveedor y que por ser multidominio, podría usar el mismo SMTP para los 2 casos sin importar el nombre canónico de ambos dominios.
Código PHP:
//Esta pagina PHP se encuentra en www.a.com...
include_once("class.phpmailer.php");
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->Host "mail.b.com";
$mail->SMTPAuth true;
$mail->Port 26;
$mail->Username "[email protected]";
$mail->Password "miclave";
$mail->From "[email protected]";
$mail->FromName "Atencion Cliente";
$mail->AddAddress("[email protected]");
$mail->WordWrap 50;
$mail->IsHTML(true);
//Las siguiente líneas son de muestra...
$mail->Subject "Here is the subject";
$mail->Body "<p>This is the HTML message body <b>in bold!</b></p>";
$mail->AltBody "This is the body in plain text for non-HTML mail clients";
if (!
$mail->Send()) {
    echo 
"<p>Message could not be sent.</p>";
    echo 
"<p>Mailer Error: " $mail->ErrorInfo "</p>";
    exit;
}
echo 
"<p>Message has been sent.</p>"
Hice unas pruebas en el XAMPP (usando el localhost) y funciona, pero al subirlo en el dominio www.a.com tiene este problema:
Código HTML:
Message could not be sent.
Mailer Error: SMTP Error: Could not connect to SMTP host.
He revisado este mensaje, muchos me afirman que es el detalle del RELAY, otros me indicaron problemas de socket para conectarse. Además, estoy brindando una cuenta para autenticarse en el servidor SMTP remoto, por lo que debería aceptarme la conexión.

He buscado en muchos foros, por Google, e incluso revisé temas y respuestas pasadas, pero no puedo encontrar una solución o asesoría acertada. Si existen temas ya tratados y/o explicados sobre este problema, por favor me indican el link o una referencia. Agradesco de antemando toda ayuda o sugerencia recibida. Gracias.
  #2 (permalink)  
Antiguo 26/01/2010, 15:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Enviar correo desde PHP con SMTP externo

El problema de conexión viene antes de la autentificación y generalmente es porque el webserver bloquea las conexiones.

Vas a tener que levantar un ticket de soporte en tu server a y que liberen la conexión a hacia tu server b para que te puedas conectar de forma exitosa.

Saludos.
  #3 (permalink)  
Antiguo 26/01/2010, 15:27
Avatar de rfadgrmm  
Fecha de Ingreso: junio-2009
Mensajes: 74
Antigüedad: 14 años, 10 meses
Puntos: 1
Pregunta Respuesta: Enviar correo desde PHP con SMTP externo

Gracias GatorV por tu pronta respuesta. Lo que me quieres decir es que depende del proveedor de hosting para conectarme al SMTP del dominio www.b.com desde www.a.com y viceversa, es correcto?

Saludos
  #4 (permalink)  
Antiguo 26/01/2010, 15:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Enviar correo desde PHP con SMTP externo

Así es, ya que generalmente tienen algún firewall que bloquee esas conexiones, y por lo que indicas que desde localhost sí puedes hacerlo el firewall esta en el servidor A.

Saludos.
  #5 (permalink)  
Antiguo 26/01/2010, 15:48
Avatar de rfadgrmm  
Fecha de Ingreso: junio-2009
Mensajes: 74
Antigüedad: 14 años, 10 meses
Puntos: 1
Sonrisa Respuesta: Enviar correo desde PHP con SMTP externo

Ok. Muchas Gracias por el aporte GatorV.

Saludos.
  #6 (permalink)  
Antiguo 27/01/2010, 08:09
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Enviar correo desde PHP con SMTP externo

rfadgrmm:
Primeramente, supongo que a.com y b.com tienen servidores smtp y por ende
el puerto 25 debe estar siempre abierto.
Segundo, por el mensaje de error que recibes, parece que el intento de conexion salio pero fue rechazado.
No parece que un firewall este causando este problema!.
Tercero, para que desde a.com puedas utilizar el servidor smtp de b.com, el servidor instalado en b.com debe permitir el RELAY o el libre acceso de la IP
que conecta, en este caso debera ser la IP de a.com. (Ojo: podeos hablar de relay no solo de IPs sino tambien de Dominios y tdo depende de el tipo de servidor que se tenga; ejemplo Surgemail, etc).
Por lo anterior, la primera solucion seria que la administracion del servidor smtp de b.com configure su servidor permitiendo el libre acceso de la IP del dominio a.com.
La otra solucion es que mantengas los sitios web como estan, a.com en USA y b.com en España y solicitarle al smtp de a.com que ALOJE tu dominio b.com en el servidor smtp de a.com de esta forma tendras dos dominios alojados en un mismo servidor smtp y unicamente debes modificar ls MX records del dominio b.com; Personalmente, manejo algo parecido que funciona perfectamente.
Saludos
Y espero te ayude
Franco
  #7 (permalink)  
Antiguo 27/01/2010, 10:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Enviar correo desde PHP con SMTP externo

Recuerda franco190453, que un firewall puede bloquear independientemente de la dirección, por lo que puede estar abierto el puerto 25 de entrada pero para salir puede que este bloqueando la conexión.

Es por eso que debe de llevar este tema al soporte de su empresa para que vean la conectividad entre servidor A y servidor B.

Saludos.
  #8 (permalink)  
Antiguo 27/01/2010, 20:09
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Enviar correo desde PHP con SMTP externo

Sinceramente, considero que GatorV, tiene razon.
Osea que antes de considerar las opciones que te menciono debes asegurate que No se estan bloqueando las salidas y entradas.
Saludos
Franco
P.S. Te recomiendo mi ultima solucion; la de alojar el dominio b.com en el servidor smtp de a.com en lo referente a correos.
1.- se crea el dominio en el servidor smtp de a.com
2.- En el servidor de DNS de b.com haces lo siguiente ->
3.- creas mail.b.com que debera apuntar a la IP del servidor smtp en a.com,
de esta manera cuando la conexion se establezca via el puerto 25, el servidor smtp de a.com reconocera el correo y lo procesara correctamente.
Saludos
Franco
  #9 (permalink)  
Antiguo 01/02/2010, 14:58
Avatar de rfadgrmm  
Fecha de Ingreso: junio-2009
Mensajes: 74
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Enviar correo desde PHP con SMTP externo

Muchas gracias a GatorV y franco190453 por los aportes. Estaba consultando con ambos proveedores y bueno, es cierto lo del RELAY, que a pesar que cambian los puertos de los servidores SMTP para controlar el flujo de entrada y salida, y detener al odioso SPAM, no posibilitan la conexión entre otros proveedores, ya que son Servidores de Host Multidominio, eso quiere decir que si le dan permiso a una dirección ip, estarían dando permiso a "todos los alias" de dominio existentes (www.c.com, www.d.org, citando ejemplos ficticios) en un mismo servidor. Me sugirieron que adquiera una direccion IP por cada dominio ó un cambio de plan para restringuir el acceso a sólo esas direcciones. La empresa a la cual le estoy creando el sistema está decidiendo en si desea conservar la cuenta actual o migrarse a otra con las características y mejoras ya mencionadas.

Aún así, muchas gracias por las respuestas a este tema.

Saludos.

Etiquetas: correo, enviar, externo, smtp
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 11:27.