Ver Mensaje Individual
  #12 (permalink)  
Antiguo 06/10/2009, 23:37
samu22
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
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