Foros del Web » Programando para Internet » PHP »

se puede enviar correo en php con servidor externo??

Estas en el tema de se puede enviar correo en php con servidor externo?? en el foro de PHP en Foros del Web. Buenas!! pues eso... tengo como encomienda hacer que mi archivo envie un correo cada vez que alguien realice una modificacion a los datos o se ...
  #1 (permalink)  
Antiguo 05/10/2009, 14:37
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Pregunta se puede enviar correo en php con servidor externo??

Buenas!!

pues eso...

tengo como encomienda hacer que mi archivo envie un correo cada vez que alguien realice una modificacion a los datos o se actualicen los datos

tengo para eso una cuenta en Gmail.com

pero no se como hacer para que desde mi servidor envie los datos desde la cuenta de gmail con la libreria mail()

alguien me puede orientar???

ya estuve buscando pero todas las opciones es para usarlo con el localhost y en este caso no puedo hacerlo asi...

alguien que me ayude??

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #2 (permalink)  
Antiguo 05/10/2009, 14:39
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: se puede enviar correo en php con servidor externo??

creo que phpmailer te sirve para eso
  #3 (permalink)  
Antiguo 05/10/2009, 14:42
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
podes enviar con cualquier from, al enviarse no comprueba que la direccion de respuesta exista, por lo que podes poner lo que vos quieras solamente que tiene que ser una cuenta valida para que puedas ver las respuestas

un ejemplo con phpmailer

Código php:
Ver original
  1. <?php
  2. include 'class.phpmailer.php';
  3. $mail = new PHPMailer();
  4.  
  5. $mail->Host = 'localhost'; // <- el host es local porque utilizo servidor smtp del hosting
  6.  
  7. $mail->From = '[email protected]';
  8.  
  9. $mail->FromName = 'samu';
  10.  
  11. $mail->Subject = 'testing';
  12.  
  13. $mail->IsHTML(true);
  14.  
  15. $mail->AddAddress("[email protected]","Nombre de usuario");
  16.  
  17.  
  18. $mail->Body = "Hola probando mail con un nombre <b>distinto</b>";
  19.  
  20.  
  21. if(!$mail->Send())
  22. {
  23.     echo "Se ha producido un error al enviar el correo.";
  24.  
  25.     echo "Mailer Error: " . $mail->ErrorInfo;
  26.  
  27.     exit;
  28.  
  29. }
  30.  
  31.  
  32.  
  33. ?>

Última edición por GatorV; 05/10/2009 a las 21:28
  #4 (permalink)  
Antiguo 05/10/2009, 15:35
 
Fecha de Ingreso: octubre-2008
Mensajes: 365
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: se puede enviar correo en php con servidor externo??

Tienes que tomar en cuenta que necesitas un servidor SMTP el cual te va a permitir que tus correos salgan...luego todo va bién como dice samu22.

Salu2
  #5 (permalink)  
Antiguo 05/10/2009, 20:30
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

Buenas!!

si, gracias a todos por responder
el caso es que necesito usar gmail como servidor de correo smtp y obviamente para recibir
ya eh probado pero no lo envia

sustituyo:
Código:
$mail->Host = 'smpt.gmail.com'; // 
$mail->From = '[email protected]';
$mail->FromName = 'SIREG'; 
$mail->Subject = 'Probando envios'; 
$mail->IsHTML(true); 
$mail->AddAddress("[email protected]","Probando envios");  
$mail->Body = "Hola probando mail con un nombre <b>distinto</b>";  
if(!$mail->Send()){    echo "Se ha producido un error al enviar el correo.";     
echo "Mailer Error: " . $mail->ErrorInfo;     exit; }   
?>
simplemente no me funciona, no marca error pero tampoco envia nada

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #6 (permalink)  
Antiguo 05/10/2009, 21:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: se puede enviar correo en php con servidor externo??

Haz incluido la librería de PHPMailer?, por otro lado tu dirección esta mal, debe de ser smtp no smpt.

Saludos.
  #7 (permalink)  
Antiguo 05/10/2009, 21:45
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

Buena!!!

si ya despues que postee me di cuenta del error de smtp, ya lo corregi pero sigue igual
el mensaje que me arroja es

Could not instantiate mail function. Se ha producido un error al enviar el correo.Mailer Error: Could not instantiate mail function.

que puedo estar haciendo mal??

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #8 (permalink)  
Antiguo 05/10/2009, 21:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: se puede enviar correo en php con servidor externo??

Revisa en los ejemplos de la clase de PHPMailer, al parecer no estas indicando que use un SMTP externo y esta tratando de usar la funcion mail interna.

Saludos.
  #9 (permalink)  
Antiguo 05/10/2009, 22:22
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

buenas!!

ya la eh revisado
y ya cambie el nombre de usuario como me dice y tambien el puerto

ahora... no me marca error pero tampoco lo envia

que puede ser??
aqui esta el codigo modificado del test

Código:
<?php

//error_reporting(E_ALL);
error_reporting(E_STRICT);

date_default_timezone_set('America/Toronto');

require_once('class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail             = new PHPMailer();

$body             = file_get_contents('contents.html');
$body             = eregi_replace("[\]",'',$body);

$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "smtp.gmail.com"; // SMTP server
$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
                                           // 1 = errors and messages
                                           // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Host       = "smtp.gmail.com"; // sets the SMTP server
$mail->Port       = 465;                    // set the SMTP port for the GMAIL server
$mail->Username   = "[email protected]"; // SMTP account username
$mail->Password   = "XXXXXXXXXXXX";        // SMTP account password

$mail->SetFrom('[email protected]', 'First Last');

$mail->AddReplyTo("[email protected]","First Last");

$mail->Subject    = "Probando el Envio de Correo";

$mail->AltBody    = "Esta es una prueba de Envio de Correo!"; // optional, comment out and test

$mail->MsgHTML($body);

$address = "[email protected]";
$mail->AddAddress($address, "SIREG");

$mail->AddAttachment("images/phpmailer.gif");      // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}

?>
un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #10 (permalink)  
Antiguo 06/10/2009, 09:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: se puede enviar correo en php con servidor externo??

Si ya no te da error es que PHPMailer se esta comunicando correctamente con el servidor SMTP, ya el que lo envie o no es cuestión del servidor SMTP como tal, PHP no se encarga de hacer el envío del correo.

Saludos.
  #11 (permalink)  
Antiguo 06/10/2009, 22:03
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

buenas!!

pues mira... de acuerdo con el programa deveria de mostrar en la pantalla el mensaje diciendo que ya se envio
o que tuvo error

como ya dije, error no me marca pero tampoco dice que se envio el correo

y obviamente tampoco se envia el correo

por lo que tengo la idea que el codigo esta mal puesto que no envia el mensaje de "correo enviado"

alguna idea??

un saludo!!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #12 (permalink)  
Antiguo 06/10/2009, 23:37
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: se puede enviar correo en php con servidor externo??

No te esta mostrando el error porque falta incluir la clase class.smtp.php quice hacer una prueba y me paso lo mismo, cuando mire el codigo de phpmailer vi esto

Código php:
Ver original
  1. public function SmtpConnect() {
  2.     if($this->smtp == NULL) {
  3.       $this->smtp = new SMTP();
  4.     }

hola si vas a usar phpmailer para utilizar el smtp de gmail tenes que modificar la clase fijate en este link
http://www.buayacorp.com/archivos/phpmailer-con-gmail/
Cita:
Bueno .. como bien dicen Gmail usa SSL como "capa de encriptación" .. pero también usa "TLS" para la autentificación.

En resumen .. si se usa PHP Mailer .. habría que hacer algunos cambios en su código para que use SSL y autentifique por TLS.

Se requiere de la extensión OpenSSL instalada para que todo esto funcine en sus servidores (revisarlo haciendo un phpinfo() o instalandola si es necesario y posible).
http://www.forosdelweb.com/1570457-post5.html


Solucion a tu problema:
busca el metodo SmtpConnect() de la clase phpmailer en mi caso linea 581
cambia esto
Código PHP:
if(eregi('^(.+):([0-9]+)$'$hosts[$index], $hostinfo)) {
        
$host $hostinfo[1];
        
$port $hostinfo[2]; 
por esto
Código PHP:
if (preg_match('#(([a-z]+://)?[^:]+):(\d+)#i'$hosts[$index], $hostinfo)){
        
$host $hostinfo[1];
        
$port $hostinfo[3]; 
luego en el script que envia el mail

Código php:
Ver original
  1. include 'class.smtp.php';
  2. include 'class.phpmailer.php';
  3.  
  4. $mail = new PHPMailer();
  5.  
  6. $mail->From = "[email protected]";
  7. $mail->FromName = "mi nombre";
  8. $mail->AddAddress ("[email protected]");
  9. $mail->Subject = "Test";
  10. $mail->Body = "probando";
  11. $mail->IsHTML(true);
  12.  
  13. $mail->IsSMTP();
  14. $mail->Host = "ssl://smtp.gmail.com";
  15. $mail->Port = 465;
  16. $mail->SMTPAuth = true; // turn on SMTP authentication
  17. $mail->Username = "[email protected]"; // SMTP username
  18. $mail->Password = "xxxx"; // SMTP password
  19.  
  20.  
  21.  
  22.  
  23. if(!$mail->Send())
  24. {
  25.     echo "Se ha producido un error al enviar el correo.";
  26.  
  27.     echo "Mailer Error: " . $mail->ErrorInfo;
  28.  
  29.     exit;
  30.  
  31. }else{
  32.     echo 'mail enviado correctamente';
  33. }

Activar la extencion OpenSLL sino no funciona

Última edición por samu22; 07/10/2009 a las 00:21
  #13 (permalink)  
Antiguo 07/10/2009, 21:24
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

buenas!!

pues eh realizado los cambios que me comentaste y nada...

ahora ah vuelto el mensaje de error inicial

SMTP Error: Could not connect to SMTP host. Error de envio : SMTP Error: Could not connect to SMTP host.


por lo que entiendo no puede conectarse al servidor

ahora
hablando del SSL
en el servidor aparece esto:

Apache/2.2.9 (Win32) DAV/2 mod_ssl/2.2.9 OpenSSL/0.9.8h mod_autoindex_color PHP/5.2.6

la pregunta es... ¿ con esto esta activado el SSL no??

si no es asi.. por favor alguien que me indique como verificar que este activado el SSL

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #14 (permalink)  
Antiguo 07/10/2009, 22:16
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: se puede enviar correo en php con servidor externo??

en un archivo .php pone phpinfo();
te tiene que aparecer la siguiente extencion

openssl
OpenSSL support enabled
OpenSSL Version | OpenSSL 0.9.8k 25 Mar 2009


no tenes habilitada la extencion por lo que no se puede conectar al smtp por eso te pone el error
  #15 (permalink)  
Antiguo 07/10/2009, 23:08
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

buenas!!

no, no aparece ningun OpenSSL

ya hice los ajustes que dice aqui:

Código:
Como habilitar openSSL.

En Windows:
1. Copiar los archivos php_openssl.dll libeay32.dll ssleay32.dll C:\Windows\System32.
Estos archivos se encuentran donde hallas instalado php (…..\php\ext)
2. Editar php.ini de C:\windows y descomentariar php_openssl.dll

Yo modifique PHPMailer y habilité Open SSL y funciona bien con Gmail.
Saludos
FAR
y nada otra cosa, los archivos libeay32 y ssleay32 no existen
uso php 5.2
copie php_openssl.dll y quite el comentario luego reinicie el apache y nada

alguna idea o algo que me falte hacer??

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #16 (permalink)  
Antiguo 07/10/2009, 23:12
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: se puede enviar correo en php con servidor externo??

busca una version de php mas completa, te recomiendo no descargar el instalador sino el paquete comprimido (zip) que viene con todas las librerias y dlls
  #17 (permalink)  
Antiguo 07/10/2009, 23:17
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

buenas!!

ya tengo las librerias.... es correcto que solo reinicie el apache???
o tengo que reiniciar todo el sistema???

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #18 (permalink)  
Antiguo 07/10/2009, 23:20
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: se puede enviar correo en php con servidor externo??

modifica el php.ini con el apache detenido, capia las dlls a system32 y arranca nuevamente el apache
  #19 (permalink)  
Antiguo 07/10/2009, 23:25
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

buenas!!!
ya lo eh hecho... y nada...

ahora una duda... no deveria de activar tambien las otras .dll's
o solo con la php_epenssl.dll basta???

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #20 (permalink)  
Antiguo 07/10/2009, 23:30
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: se puede enviar correo en php con servidor externo??

en el php.ini descomentaste esto?
Cita:
extension=php_openssl.dll

php_epenssl.dll no hay que copiarla a system 32 sino libeay32 y ssleay32
  #21 (permalink)  
Antiguo 07/10/2009, 23:34
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

buenas!!

si, fue error de posteo lo que paso

esto ya quedo asi:

extension=php_openssl.dll

y la libreria php_openssl.dll la copie a system32 junto con libeay32.dll y ssleay32.dll

luego re-arranque el apache y probe de nuevo y sigue sin aparecer el OpenSSL y su "status" en el phpinfo()

dime que estoy haciendo mal

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #22 (permalink)  
Antiguo 07/10/2009, 23:39
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: se puede enviar correo en php con servidor externo??

busca cuantos archivos php.ini tenes capaz que tenes uno en windows y no te esta levantando la extencion
  #23 (permalink)  
Antiguo 07/10/2009, 23:57
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

buenas de nuevo!!!

pues resulta que despues de mucho ya logre que aparezca open ssl en el phpinfo

esta activado pero.....

sigue sin enviar el correo
y continua el mensaje

SMTP Error: Could not authenticate. Se ha producido un error al enviar el correo.Mailer Error: SMTP Error: Could not authenticate.

alguna idea??
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #24 (permalink)  
Antiguo 08/10/2009, 00:06
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: se puede enviar correo en php con servidor externo??

es otro error ahora Could not authenticate no esta autentificando tu usuario y contraseña
  #25 (permalink)  
Antiguo 08/10/2009, 00:19
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

Buenas!!

ya listo!! ya lo eh logrado!!!

muchisimas gracias por todo samu22 no tienes idea de cuan agradecido estoy....

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #26 (permalink)  
Antiguo 08/10/2009, 00:31
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: se puede enviar correo en php con servidor externo??

excelente!! felicitaciones, me alegra que lo hayas podid resolverl, lo que vi que al mandar con gmail el from lo envia con la cuenta de usuario que uses, si lo usas desde un hosting con servidor smtp podes cambiarlo pero para local con eso te alcanza jaja, exitos!!
  #27 (permalink)  
Antiguo 08/10/2009, 11:13
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

Buenas!!!

me ah surgido un detalle y para no abrir otro post porque esta relacionado con esto lo pongo aqui....

ya se esta enviando el correo pero...

ahora me piden que envie una copia "visible" a otro correo pero tambien una copia Oculta a otro

pero no tengo idea de como hacerlo

alguien me puede ayudar??

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #28 (permalink)  
Antiguo 08/10/2009, 11:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: se puede enviar correo en php con servidor externo??

phpMailer tiene los métodos addCC y addBCC, revisa en la documentación para que veas como hacerlo.

Saludos.
  #29 (permalink)  
Antiguo 08/10/2009, 11:22
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: se puede enviar correo en php con servidor externo??

buenas!!!

muchas Gracias GatorV este punto de partida necesitaba... me documento y si me falta algo ya lo comentare

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #30 (permalink)  
Antiguo 08/10/2009, 11:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: se puede enviar correo en php con servidor externo??

Siempre es bueno tener a la mano la documentación de las clases que uses, te puedes ahorrar tiempo.

Saludos.
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 08:42.