Foros del Web » Programando para Internet » PHP »

Fallo de envío de email en localhost

Estas en el tema de Fallo de envío de email en localhost en el foro de PHP en Foros del Web. Trabajo con una aplicación en PHP como Sistema de Información de Proyectos con la que envío email's automáticos a los usuarios con alguna de las ...
  #1 (permalink)  
Antiguo 19/04/2005, 03:30
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 4 meses
Puntos: 0
Fallo de envío de email en localhost

Trabajo con una aplicación en PHP como Sistema de Información de Proyectos con la que envío email's automáticos a los usuarios con alguna de las rutinas...
En la red no tengo problemas pero en localhost no puedo conectar..
¿Problemas de versión de php?.
¿Problema de configuración?...
En localhost utilizo Apache sobre windows2000 profesional
El script que uso es el que indico:

///////////////////////////////////////
$email="[email protected]";
$subject="Prueba de envio";
$message="blablablabba";
$ymail="[email protected]";
$yname="minombre";

$sheader="From: \"$yname\" <$ymail>\nX-Mailer: PHP/" . phpversion();
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
mail($email,$subject,$message,$sheader);
///////////////////////////////////////////////
  #2 (permalink)  
Antiguo 19/04/2005, 08:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
La función mail() de PHP .. no envia el e-mail en sí .. sólo lo entrega al "MTA" (Mail transfer Agent) para que este lo envie finalmente. Un "MTA" es por ejemplo un servidor de correo SMTP .. o sendmail (para linux) .. o similar.

En tu PC de tu casa .. lo que no tienes instalado es un servidor SMTP .. instala uno para tus pruebas locales. Windows 2000 creo que tiene el suyo própio .. pero si no te quieres liar .. puedes usar por ejemplo: QK SMTP Server, bien simple y sencillo de configurar (sólo es servidor SMTP .. no POP .. justo lo que necesitas: enviar e-mail)

Con respecto a la configuración de PHP .. tan sólo debes dejarlo como está (php.ini) el apartado:

SMTP = Localhost

eso apunta a tu própio servidor (PC) que es donde se supone que correras tu servidor SMTP (por cierto .. no actives la "autentifiación" . .PHP con su función mail() no autentifica).

Un saludo,
  #3 (permalink)  
Antiguo 19/04/2005, 09:22
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 4 meses
Puntos: 0
Gracias por tu rápida atención Cluster. Insisto porque estoy metido en un lío.
A ver si me explico con claridad para que me puedas ayudar mejor...

Estoy en un PC de oficina (con un localhost Apache sobre window2000) que trabaja en una red de empresa con cuenta de correo smtp.telefonica.net. pero todos los correos son [email protected] (de la empresa)
Con el script que te indiqué trato de enviar email...

He probado configurando php.ini con SMTP="smtp.telefonica.net"
..si envio un email a [email protected] FUNCIONA
..si envio un email a [email protected] me da fallo de conexión (error server).
Lógicamente lo que necesito es enviar correos a [email protected]
Por favor, dime cualquier cosa..

¿Cuando te refieres a la autentificación es la de la cuenta de correo?
Probaré a buscar el QK SMTP Server (¿de dónde lo puedo bajar?
Muchísimas gracias
  #4 (permalink)  
Antiguo 19/04/2005, 09:29
Avatar de liebre  
Fecha de Ingreso: septiembre-2004
Ubicación: Gavilanes
Mensajes: 17
Antigüedad: 19 años, 6 meses
Puntos: 0
creo que lo que te dice es que tienes que instalar un servidor de correo en tu ordenador local,(que por defecto no lo tienes instalado) para que la funcion email pueda ejecutarse.
  #5 (permalink)  
Antiguo 19/04/2005, 10:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
¿Cuando te refieres a la autentificación es la de la cuenta de correo?
Justamente ese es el problema que tienes al intentar usar el servidor SMTP de tu proveedor (ISP). De alguna forma sólo envia e-mails a usuarios del mismo dominio si no te autentificas, pero no a otros dominos.

Como ya te comenté .. mail() de PHP no autentifica en SMTP (ni por POP) . si deseas continuar usando el servidor SMTP de tu ISP . .tendrás que usar alguna classe como por ejemplo:

PHP Mailer
http://phpmailer.sourceforge.net

Que permite conexión directa a SMTP para enviar el e-mail y autentificación (la misma contraseña/usuario que usas en tu cliente de correo para enviar/recibir e-mails)

Cita:
Probaré a buscar el QK SMTP Server (¿de dónde lo puedo bajar?
Puedes usar google .. sale el primero por ese termino:
http://www.qksoft.com/qk-smtp-server/

Ahora . por otro lado dices que trabajas en una RED .. si es así, tendrás que habilitar tu proxy/firewall (o router de tu proveedor de acceso a internet o similar) para abrir el puerto 25 que es el que usa SMTP por defecto (salvo que lo cambies). Si no haces todo esto y te aseguras de ello tendrás problemas .. pero en este caso mail() funcionará bien . .no reportará ningún error .. será en los log's de tu servidor SMTP donde veras esos fallos en la entrega.

PD: Revisa tu servidor Windows 2000 .. por qué creo que ya tiene su própio servicio SMTP (que a lo mejor lo tendrás deshabilitado y/o no configurado) .. Y si lo tienes activado .. tal vez al instalar otro servidor SMTP que trabaja en el mismo puerto tendrás conflictos entre ellos. Asegurate de esto.

Un saludo,
  #6 (permalink)  
Antiguo 19/04/2005, 10:17
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 4 meses
Puntos: 0
LISTO EL POLLO !TODO BIEN! FANTÁSTICO.
Por ahora no me despiden....
Lo solucioné instalando el QT SMTP Server que, por cierto, no es free?.
Muchas gracias Cluster
  #7 (permalink)  
Antiguo 19/04/2005, 10:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por caitoss
LISTO EL POLLO !TODO BIEN! FANTÁSTICO.
Por ahora no me despiden....
Lo solucioné instalando el QT SMTP Server que, por cierto, no es free?.
Muchas gracias Cluster
No .. no es "free" es Shareware .. pero si quieres .. usa google .. busca por "SMTP Server" .. veras muchooooos .. alguno de ellos gratuito supongo (creo que un tal "MiniRelay" era gratuito).

Un saludo,
  #8 (permalink)  
Antiguo 19/04/2005, 10:42
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 19 años, 1 mes
Puntos: 3
yo tengo el mini Relay no se instala le das a un icono y te habre una ventana pues nunca me funciono otro mejor ??????
  #9 (permalink)  
Antiguo 20/04/2005, 00:42
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 4 meses
Puntos: 0
Cluster una cosa más (espero que para terminar con este problema)...
He decidido que voy a optar por la utilización de una class de phpmailer entre otras cosas porque voy a necesitar hacer gestión de archivos vía email.
Tengo una duda...En la intalación me dice que copie los archivos(class) en el php.ini include_path... ¿Se refiere a que debo modificar la configuarción del php.ini include_path = ".;F:/689\php\includes"? (este dir no existe en mi máquina) e incluir ahí los archivos o simplemente puedo meterlos en un dir "includes" que ya tengo para la aplicación.
Gracias de nuevo
  #10 (permalink)  
Antiguo 20/04/2005, 06:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
No, no es necesario que copies nada a tu "include_path" .. Puedes trabajarlos en tu "dir": "includes" como lo haces con otras classes o código en general.

Un saludo,
  #11 (permalink)  
Antiguo 21/04/2005, 04:21
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola Cluster, sigo con problemas...
Ayer probé en mi casa (tengo un servidor para una página personal) el class.phpmailer en localhost y quedé contento pues todo me funcionó, pero hoy en la oficina el script para enviar email me da fallo: connect_host.
Temo que tenga algo que ver con estar metido en la red de empresa (firewall)pero me quiero asegurar antes pues todo este sitema es crítico (Sistema de Información central y no quiero crear pánico en el departamento de informática (Yo soy el Director de desarrollo y sabrás de nuestras diferencias).

//////////ESTE ES EL SCRIPT DE MI SISTEMA///////
function enviamail($toemail,$toname,$mymail,$myname,$subjec t,$message) {
Global $mailerror;
require("includes/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "localhost"; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "mi_cuenta_intranet"; // SMTP username
$mail->Password = "mi_clave_intranet"; // SMTP password
$mail->From = $mymail;
$mail->FromName = $myname;
$mail->AddAddress("$toemail",$toname);
$mail->AddReplyTo("[email protected]","Information" );
$mail->WordWrap = 50; // set word wrap
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // pendiente
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); //pendiente
$mail->IsHTML(true); // send as HTML
$mail->Subject = $subject;
$mail->Body = $message;
$mail->AltBody = "mensaje solo texto";
if(!$mail->Send()){
echo "Message was not sent <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
// exit;//lo llevo al script principal
$mailerror="<b>Mensaje No enviado</b><br>" . $mail->ErrorInfo;
}else{
echo "Mensaje enviado";
$mailerror="Mensaje enviado";
}
}
//////////////////////////////////
Esta es la función del class.phpmailer.php donde falla

function SmtpConnect() {
if($this->smtp == NULL) { $this->smtp = new SMTP(); }
$this->smtp->do_debug = $this->SMTPDebug;
$hosts = explode(";", $this->Host);
$index = 0;
$connection = ($this->smtp->Connected());
// Retry while there is no connection
while($index < count($hosts) && $connection == false)
{
if(strstr($hosts[$index], ":"))
list($host, $port) = explode(":", $hosts[$index]);
else
{
$host = $hosts[$index];
$port = $this->Port;
}

echo "HASTA AQUí LLEGO CON EL HOST:localhost y EL PORT:25";
if($this->smtp->Connect($host, $port, $this->Timeout))
{

echo " AQUÍ FALLÓ LA CONEXION ";
if ($this->Helo != '')
$this->smtp->Hello($this->Helo);
else
$this->smtp->Hello($this->ServerHostname());

if($this->SMTPAuth)
{
if(!$this->smtp->Authenticate($this->Username,
$this->Password))
{
$this->SetError($this->Lang("authenticate"));
$this->smtp->Reset();
$connection = false;
}
}
$connection = true;
}
$index++;
}
if(!$connection)
$this->SetError($this->Lang("connect_host"));

return $connection;
}
////////////////////
Perdona mi insistencia pero estoy metido en un compromiso importante (pasar un sistema que había desarrollado para la red a operar con la INTRANET (los hackers) y realmente me has demostrado que puedes ayudarme.
Saludos
  #12 (permalink)  
Antiguo 10/05/2005, 16:11
 
Fecha de Ingreso: febrero-2005
Mensajes: 12
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola caitoss soy alejandro y estoy desarrollando un sistema pero el detalle es que este sistema necesita enviar correo de confirmación.... bueno sin más que decir el problema se me presenta para configurar el php.ini y estoy un poco enredado ahí. Ahora cuando hago este formulario para enviar correo en ASP todo me funciona bien... pero cuando lo desarrollo en PHP nada estuve buscando información en la web y el detalle es que tengo que tener un Servidor SMTP ya lo conseguí es un programa llamado Mercury/32 entre todo lo que he bajado de Internet este es el que me parece mejor, te explico como hice la configuración el servidor SMTP lo configure bien hasta donde parece lo importante es la salida y la entrada de correo esté por lo meno se configura para entrada y salida de correo y luego configure el Microsoft Outlook esté lo configure con la entrada y salida de correo con el ip local del equipo que es 127.0.0.1 y funciona bien. Cuando abro el Servidor SMTP me muestra todas la salida de los correo que estoy enviando por Outlook. Y por ultimo configuro el php.ini para que SMTP sea local ( SMTP= localhost ) pero no me funcio o no me llegan los correo que envió sera que me puedes ayudar estoy un poco enredado ahí... gracias espero tu respuesta... ha estoy trabajando bajo plataforma Windows 2000 Server.
  #13 (permalink)  
Antiguo 10/05/2005, 16:14
 
Fecha de Ingreso: febrero-2005
Mensajes: 12
Antigüedad: 19 años, 1 mes
Puntos: 0
Problema para enviar correo en php

Hola caitoss soy alejandro y estoy desarrollando un sistema pero el detalle es que este sistema necesita enviar correo de confirmación.... bueno sin más que decir el problema se me presenta para configurar el php.ini y estoy un poco enredado ahí. Ahora cuando hago este formulario para enviar correo en ASP todo me funciona bien... pero cuando lo desarrollo en PHP nada estuve buscando información en la web y el detalle es que tengo que tener un Servidor SMTP ya lo conseguí es un programa llamado Mercury/32 entre todo lo que he bajado de Internet este es el que me parece mejor, te explico como hice la configuración el servidor SMTP lo configure bien hasta donde parece lo importante es la salida y la entrada de correo esté por lo meno se configura para entrada y salida de correo y luego configure el Microsoft Outlook esté lo configure con la entrada y salida de correo con el ip local del equipo que es 127.0.0.1 y funciona bien. Cuando abro el Servidor SMTP me muestra todas la salida de los correo que estoy enviando por Outlook. Y por ultimo configuro el php.ini para que SMTP sea local ( SMTP= localhost ) pero no me funcio o no me llegan los correo que envió sera que me puedes ayudar estoy un poco enredado ahí... gracias espero tu respuesta... ha estoy trabajando bajo plataforma Windows 2000 Server.
  #14 (permalink)  
Antiguo 11/05/2005, 06:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por alejandrocc03
Hola caitoss soy alejandro y estoy desarrollando un sistema pero el detalle es que este sistema necesita enviar correo de confirmación.... bueno sin más que decir el problema se me presenta para configurar el php.ini y estoy un poco enredado ahí. Ahora cuando hago este formulario para enviar correo en ASP todo me funciona bien... pero cuando lo desarrollo en PHP nada estuve buscando información en la web y el detalle es que tengo que tener un Servidor SMTP ya lo conseguí es un programa llamado Mercury/32 entre todo lo que he bajado de Internet este es el que me parece mejor, te explico como hice la configuración el servidor SMTP lo configure bien hasta donde parece lo importante es la salida y la entrada de correo esté por lo meno se configura para entrada y salida de correo y luego configure el Microsoft Outlook esté lo configure con la entrada y salida de correo con el ip local del equipo que es 127.0.0.1 y funciona bien. Cuando abro el Servidor SMTP me muestra todas la salida de los correo que estoy enviando por Outlook. Y por ultimo configuro el php.ini para que SMTP sea local ( SMTP= localhost ) pero no me funcio o no me llegan los correo que envió sera que me puedes ayudar estoy un poco enredado ahí... gracias espero tu respuesta... ha estoy trabajando bajo plataforma Windows 2000 Server.
Y en tu servidor de correo SMTP que usas . .que log's ves cuando envias un e-mail con PHP? .. ahí te dirá concretamente el error. Sobre todo veras si realmente mail() de PHP (o que función usas? .. usas PHP Mailer? ..) consiguió entregar el e-mail al "MTA" (tu servidor SMPT en tu caso) .. El "cómo" lo envie este .. si puede hacerlo llegar a su destinatario o problemas al enviarlo ya dependerá de tu servidor de correo y .. todos esos problemas los veras en los LOG's del mismo.

Un saludo,
  #15 (permalink)  
Antiguo 11/05/2005, 07:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
No sé que tipo de firewall usas en tu empresa .. (transparente o no?) el caso es que la configuración de PHP Mailer ya que envias tus e-mails por SMTP directo será exactamente igual que los datos de conexión que usas tu en tus cuentas de e-mail de tu "Outlook" (usas un cliente de correo para enviar e-mails desde el .. o algún web-mail externo o corporativo de tu intranet?).

Por ejemplo .. algunas configuraciones de e-mail que pasan por proxys no trasnparentes debes indicar como "SMTP" algo tipo:

SMTP (host) = "IP del PC que te hace de proxy"
($mail->Host = "......"; // SMTP servers)

Y como "nombre de cuenta": [email protected]#mail.domino.tal

Si usases un proxy transparente .. no tendrías que hacer nada de todo esto..

Lo que tampoco conozco es que servidor SMTP vas a usar? el de tu proveedor de acceso a internet/hostig .. o un servidor SMTP corporativo instalado en esa red (intranet?)

Los temas del proxy .. firewalls (por si quieres instalar tu própio servidor SMTP en tu red . .tendrás que abrir los puertos que el servidor SMTP usa para darle la salida) .. consulta con tu Administrador de tu red .. (y si eres tu .. consulta en el foro de "seguridad y redes" .. El tema ya traspasa a lo que hace "PHP").

Un saludo,
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 09:22.