Foros del Web » Programando para Internet » PHP »

Problemas con salida de correo

Estas en el tema de Problemas con salida de correo en el foro de PHP en Foros del Web. Saludos Estoy tratando de enviar correos electronicos desde mi aplicacion en php usando el phpmailer, pero tengo un error, ya comprobe que el error no ...
  #1 (permalink)  
Antiguo 18/01/2010, 11:12
Avatar de palma2039  
Fecha de Ingreso: septiembre-2009
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 0
Problemas con salida de correo

Saludos

Estoy tratando de enviar correos electronicos desde mi aplicacion en php usando el phpmailer, pero tengo un error, ya comprobe que el error no es de codigo, sino que hay algo en la red o en mi servidor que no esta permitiendo que el correo salga.

El error que me muestra es este:


Trabajo en una empresa donde la arquitectura de red es buena, se cuenta con un firewall empresarial, en el cual el protocolo SMTP para mi server esta permitido, mi server esta en la DMZ, no tengo un firewall en mi server, se cuenta con un servidor Exchage para el correo.

El error me parece que no esta con la conexion al server de email de mi empresa sino que el trata de loguearse a el "From address" cuando no deberia ya que solo es una direccion a que se pone de remitente; y ademas el correo y el password para el smtp ya esta colocado.

Adjunto ademas el codigo php:
Código PHP:
$mail = new PHPMailer();

$mail->IsSMTP();
$mail->SMTPAuth false;
$mail->Host "mail.catie.ac.cr";
$mail->Port 25;
$mail->Username "[email protected]";
$mail->Password "*****""aqui va la contraseña"

$mail->From "[email protected]";
$mail->FromName "Desde cuenta catie";
$mail->Subject "Prueba de envio de correo";
$mail->AddAddress("[email protected]","Hotmail");
$mail->AddCC("[email protected]");
$body  "Hola <strong>amigo</strong><br>";
$body .= "probando <i>PHPMailer<i>.<br><br>";
$body .= "<font color='red'>Saludos</font>";

$mail->Body $body;
$mail->AltBody "Hola amigo\nprobando PHPMailer\n\nSaludos";

$mail->AddAttachment("images/wall-linux-3.jpg""imagenLinux.jpg");

if(
$mail->Send()){
    echo 
"El correo se envio correctamente";
}else{
    echo 
"El correo no se envio correctamente";

Disculpas si este post no va aqui y si no debiera ir aqui agadezco que me indiquen donde debe ir.
  #2 (permalink)  
Antiguo 18/01/2010, 13:57
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Problemas con salida de correo

Primero:

Código PHP:
$mail->SMTPAuth true
Debería funcionar, nunca he usado Exchange y tampoco se si PHPMailer soporta NTLM como método de autentificación, asi que primer paso proba lo anterior, si no funciona ya estás advertido que es porque PHPMailer no trabaja con protocolo NTLM.

Código:
250 - AUTH NTLM
Vás a tener que utilizar google con PHPMailer NTLM o PHPMailer y Exchange o preguntar nuevamente en el foro.

Firewall olvidate, sino no tendrías ni siquiera esas respuesta, esta todo ok

Disculpá que no sea más especifico.
  #3 (permalink)  
Antiguo 18/01/2010, 14:00
Avatar de palma2039  
Fecha de Ingreso: septiembre-2009
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problemas con salida de correo

Cita:
Iniciado por abcdefghi Ver Mensaje

Código:
250 - AUTH NTLM
Disculpa donde debo colocar esto????
  #4 (permalink)  
Antiguo 18/01/2010, 14:19
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Problemas con salida de correo

Cita:
Iniciado por palma2039 Ver Mensaje
Disculpa donde debo colocar esto????
En ningún lado, esa es la respuesta que te dio el smtp al tratar de enviar el email, dice que solamente soporta como método de autenticación NTLM, solamente probá con activar el smtpauth si no logras que funcione es porque PHPMailer no soporta es método.

Me explayo, deben de existir 10 métodos de autenticación LOGIN PLAIN, CRAM-MD5, etc, el que usas tu server es NTLM.

http://en.wikipedia.org/wiki/NTLM
  #5 (permalink)  
Antiguo 18/01/2010, 14:30
Avatar de palma2039  
Fecha de Ingreso: septiembre-2009
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problemas con salida de correo

Pues no parece que no es eso, porque hize un ejemplo en una maquina de la red (dentro de la misma empresa solo que no esta en la DMZ) para sacar los correos atravez de el server exchange y si me funciono con el codigo anterior.

Saludos
  #6 (permalink)  
Antiguo 18/01/2010, 15:03
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Problemas con salida de correo

Cita:
Iniciado por palma2039 Ver Mensaje
Pues no parece que no es eso, porque hize un ejemplo en una maquina de la red (dentro de la misma empresa solo que no esta en la DMZ) para sacar los correos atravez de el server exchange y si me funciono con el codigo anterior.

Saludos
Ojo, dentro de la misma empresa, red, es usual no necesitar autenticación, lo importante es que veas porque te lo rechaza, en el caso que mostraste anteriormente es lo que te dije.

De todas maneras, puede ser perfectamente que PHPMailer no soporte NTLM o que el usuario y clave NTLM no sea ese que pusiste.

De todas maneras si tenés vista podes ir a Tools->Options->Advanced->Maintenance->Troubles y habilitar mail para ver que es lo que esta enviando el Windows Mail aka outlook y si verdaderamente están correcto los datos que decis.

PS: Esto no tiene ciencias ocultas, si se te complica chechea el log del server a ver porque rechaza, si no logras sacarlo, poné un sniffer envía un mail con outlook y con PHPMailer, la diferencia es el problema.

Última edición por abcdefghi; 18/01/2010 a las 15:13
  #7 (permalink)  
Antiguo 18/01/2010, 15:15
Avatar de palma2039  
Fecha de Ingreso: septiembre-2009
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problemas con salida de correo

Bueno primero ya habia pensado que quizas por la configuracion que se hace en "correo" en panel de control en windows era que me permitia enviar correo pero lo probe en un laptop que no tiene configurado nada del outlook y tambien me funciono por lo que quiere decir que no esto.

Ahora lo que me causa confucion es porque si el NTLM es el que esta dando problema porque desde mi maquina de escritorio y la laptop no me da problemas para conectarme al server exchage, y desde el server (que por cierto esta en linux) da problema????

Saludos

PS: De acuerdo grax
  #8 (permalink)  
Antiguo 18/01/2010, 16:05
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Problemas con salida de correo

Cita:
Iniciado por palma2039 Ver Mensaje
Ahora lo que me causa confucion es porque si el NTLM es el que esta dando problema porque desde mi maquina de escritorio y la laptop no me da problemas para conectarme al server exchage, y desde el server (que por cierto esta en linux) da problema????
En realidad te haz quedado corto con la info ya que en si hay muchas variables, cuando decis que los haces desde el laptop y/o escritorio te referis a PHPMail o al outlook. De todas manerás las configuraciones del servdor de correo es el que te va a decir como funciona y se contecta, todo, si estuvieramos hablando de postfix te podría dar una mano pero de exchange conozco el nombre nomás, deberías buscar info en un foro especifico de él.

Por práctica se usan dos configuraciones, los que estan dentro de la red y los que están fuera, los que estan dentro usualmente no se les requiere autentificaciones ya que de por si estan autenticados, los que están fuera, sí o sí se les pide autentificación para enviar un email fuera del dominio del server, sino lo fuera así sería baneado por servidores como yahoo, etc, por actuar como open relay.


En tu caso proba desde afuera enviando un email a una dirección de correo que este dentro del dominio del server, solo para chequear que este bien, despúes envialo a una dirección que esté afuera, si te da error (que es lo que te va a suceder), es porque necesita autentificarse, en este caso exchange solo soporta NTLM que puede ser que PHPMailer no lo soporte, lo vas a ver si pones un sniffer o en los log del servidor.

Todo este supongo que el servidor linux, esta afuera de la red, sino no estariamos conversando, si querés para evitar autentificarte y siempre que el server linux tenga un ip propio podes, agregarle a Exchange que lo que venga de tal IP lo deje pasar sin autentificarse, pero estarías expuesto a IP Spoofing.
  #9 (permalink)  
Antiguo 18/01/2010, 21:46
Avatar de palma2039  
Fecha de Ingreso: septiembre-2009
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problemas con salida de correo

Saludos

No lo que hize en la laptop fue montar el appserver y correr el ejemplo desde ahi (el mismo que corri en mi maquina, en donde esta la configuracion del outlook), ya que esta no tiene configurado nada del outlook, en este ejemplo envie correos tanto internos, a mi correo de la empresa (no requiere autentifiacion), como externo (gmail, hotmail) (si requiere de autentificarse), y ambos funcionaron, y estos correos envidos atraves del server exchage de mi empresa

Y en cuanto a los permisos para enviar los correos, dentro de la red (a direcciones de mi empresa) no se requiere de auntentificacion, para direcciones externas a la misma si se requiere, y esta permitido cualquier que peticion SMTP de mi server al exchange sea permitida, entonces estoy claro que para direcciones externas si necesito la autentificacion pero el problema es que aun para las direcciones internas me da el error.

Ahora lo que yo interpreto del error es que no es al momento de la autentificacion cuando sucede el error sino que cuando llega al seccion de codigo donde esta :
Código PHP:
$mail->From "[email protected]"
me da un error de auntentificacion, ¿porque? ese es el motivo del post; porque aunque cambie la direccion del from por una de gmail o hot, etc me da el mismo error.

Ahora yo entiendo lo que dices de NTLM pero si PHPMailer no lo soportara no me permitiria enviar los correos en el ejemplo que monte en mi maquina y en la laptop, donde uso el exchage para enviar los correos de prueba. Por lo que el problema tiene que ser en mi server o en algo en la red pero no logro dar con que es concretamente.

Saludos y gracias por el tiempo
  #10 (permalink)  
Antiguo 19/01/2010, 04:56
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Problemas con salida de correo

UPDATE: Lee el mensaje de abajo hacia arriba, empeza por lo último.

Bueno, vamos avanzando, lo importante no es lo que diga yo sino lo que te dice Exchange, acá tenés una lista que te dice los problemas y soluciones, siempre tenes que mirar los log para saber que pasa:

http://www.freewebs.com/boosp/smtperr.htm (En la captura que tenés buscas el 530 y luego el 5.7.1)

http://technet.microsoft.com/en-us/library/bb123686.aspx

Proba poniendo:

Código PHP:
$mail->SMTPAuth false
y enviar un correo interno, si te lo envía perfectamente es un error de autentificación, aunque no lo necesite internamente, PHPMailer no lo sabe, si vos especficas que se autentifique y no lo logra hacer, no te va enviar ni correo interno ni externos, ya que la autentificación se hace un paso antes que el de la especificación del los envíos.

Poné también para que te tiré mas info, aunque es lo mismo que ver los log.
Código PHP:
$mail->SMTPDebug  2
Site con más info:

http://www.gilham.org/Blog/Lists/Posts/Post.aspx?List=aab85845%2D88d2%2D4091%2D8088%2Da6b bce0a4304&ID=665

Fijate que dice que Exchange requiere:
Código PHP:
$mail->SMTPAuth true;
$mail->SMTPSecure "tls"
Ojo, SMTPSecure sólo funciona desde Version 2.0.0 rc1, aunque deberías tener una versión nueva, el consejo nunca esta de más bajate la última estable.

Esperemos que se resuelva con esto, Saludos.

Última edición por abcdefghi; 19/01/2010 a las 07:37
  #11 (permalink)  
Antiguo 19/01/2010, 06:06
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Problemas con salida de correo

apache puede ser el problema de este error
fedora 12(linux)

setsebool -P httpd_can_sendmail 1

getsebool -a | sendmail
httpd_can_sendmail --> on

service httpd restart

no es ningún error es un mensaje que muestra que el correo ha sido enviado correctamente
para desactivar porque los usuarios no les interesa esto tienes que editar class.phpmailer.php la
linia 779 la tienes de comentar
//$this->smtp->do_debug = $this->SMTPDebug;

el problema que he visto de phpmailer que yo también estoy utilizando es que solo valida correo y mensaje

pero yo también quiero que me valide nombre y apellidos y assumpto que sean obligatorios

Última edición por albertrc; 19/01/2010 a las 06:15
  #12 (permalink)  
Antiguo 19/01/2010, 07:35
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Problemas con salida de correo

Cita:
Iniciado por albertrc Ver Mensaje
apache puede ser el problema de este error
fedora 12(linux)

setsebool -P httpd_can_sendmail 1

getsebool -a | sendmail
httpd_can_sendmail --> on

service httpd restart
Amigo, la verdad que me has perdido, abre un nuevo post con tu consulta ya que es radicalmente distinta.

Apache, puntualmente SELinux que es lo que estás planteando, no puede ser el problema en el caso que plantea el post, ya que primero no usa sendmail y el logra comunicarse con el server pero tiene un error de validación como podrás ver en el snapshot.

De todas maneras, hay muchos que desintalan SELinux y yo soy uno de ellos, criterio personal por supuesto.

Cita:
Iniciado por albertrc Ver Mensaje
no es ningún error es un mensaje que muestra que el correo ha sido enviado correctamente
Tal vez me he equivocado en la interpretación pero planteas comentar una línea para que no debugee más?

Código PHP:
//$this->smtp->do_debug = $this->SMTPDebug; 
En ese caso te conviene hacer:

Código PHP:
$mail->SMTPDebug false
De todas forma, él necesita esa información para saber que es lo que está pasando y efectivamente no tiene nada que ver esa información con que se envíe un email o no.

Cita:
Iniciado por albertrc Ver Mensaje
el problema que he visto de phpmailer que yo también estoy utilizando es que solo valida correo y mensaje

pero yo también quiero que me valide nombre y apellidos y assumpto que sean obligatorios
Valida, te refieres a que te exije que exista el email y mensaje y que aparte necesitas que te exija nombre y apellido?

Abre un nuevo post y pregunta, requerir Nombre y Apellido con PHPMailer, desconozco los métodos y/o propiedades que habiliten lo que necesitas pero si en la doc no figuran deberas extender la clase, para que te tire esos errores.
  #13 (permalink)  
Antiguo 19/01/2010, 09:05
Avatar de palma2039  
Fecha de Ingreso: septiembre-2009
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problemas con salida de correo

Saludos

Pues amigo pense que no iba a llegar el momento en que escribiera este post, pero ya llego, luego de dos semanas de trabajo lo hemos logrado!!!!

Este es el codigo para conectar phpmailer con un server Exchange:
Código PHP:
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

$mail->IsSMTP(); // telling the class to use SMTP

try {
  
$mail->Host       "mail.dominio.com"// SMTP server
  
$mail->SMTPDebug  2;                     // se usa para obtener informacion (solo para las pruebas)
  
$mail->SMTPAuth   true;                  // activar la autentificacion SMTP (en caso de que lo requiera, sino pues va false) 
  
$mail->SMTPSecure "tls";                 // protocolo que utiliza exchange para la conexion
  
$mail->Host       "mail.dominio.com";      // la direccion SMTP del server que se utiliza para conectar
  
$mail->Port       587;                   // el 587 es el puerto que exchange utiliza para conectarse
  
$mail->Username   "[email protected]";  // tu correo de la empresa
  
$mail->Password   "*****";            // el password de tu correo de la empresa
  
$mail->SetFrom('[email protected]''Tu nombre'); //Remitente del correo
  
$mail->AddAddress("[email protected]","Nombre de la persona a la que va dirigido el correo"); //correo del destinatario y nombre del mismo
  
$mail->Subject 'PHPMailer Test Subject via mail(), advanced'//Asunto
  
$mail->AltBody 'To view the message, please use an HTML compatible email viewer!'// texto alternativo en caso de que el visor de correo no soporte HTML
  
$mail->MsgHTML('Texto HTML'); //Texto en HTML, si el visor soporta HTML se vera este texto de lo contrario se vera el texto de "AltBody " 
 
$mail->AddAttachment("images/wall-linux-3.jpg""imagenLinux.jpg"); //Adjuntos
  
$mail->Send(); //Envio del correo
  
echo "Message Sent OK</p>\n";
} catch (
phpmailerException $e) {
  echo 
$e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
  echo 
$e->getMessage(); //Boring error messages from anything else!

Me sirvio la informacion que estaba en este link que me diste:

http://www.gilham.org/Blog/Lists/Pos...e0a4304&ID=665

Gracias por el tiempo y el esfuerzo invertido abcdefghi (por cierto que nick mas creativo XD).

Saludos
  #14 (permalink)  
Antiguo 19/01/2010, 10:12
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Problemas con salida de correo

Me alegro que lo hayas resulto, esto no sólo aplica a Exchange sino a cualquier servidor de email que tenga conexión segura al autentificar, siempre que aparezca:

Cita:
250 - STARTTLS
deberíamos utililar

Código PHP:
$mail->SMTPSecure "tls"
Fué mi error no darme cuenta antes pero pasa.

Saludos y felicitaciones nuevamente.

Etiquetas: correo, salida
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 19:48.