2011-07-27 27 views
5

Possible Duplicate:
php mail() function on localhostAyuda con PHP mail() la función

que estoy tratando de hacer algunas pruebas localhost para la recuperación de contraseñas en mi sitio, pero cuando intento enviar un correo electrónico, me sale el siguiente error:

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() 

Aquí están las configuraciones relevantes en mi archivo php.ini.

; For Win32 only. 
; http://php.net/smtp 
SMTP = localhost 
; http://php.net/smtp-port 
smtp_port = 25 

; For Win32 only. 
; http://php.net/sendmail-from 
sendmail_from = [email protected] 

No estoy seguro de qué configurar para las pruebas de localhost. Me doy cuenta de que tengo que configurar SMTP en cualquier servidor de correo de mi proveedor, pero trabajo en un edificio compartido de oficinas, así que no sé cómo averiguar quién proporciona Internet aquí.

Gracias de antemano.

Respuesta

2

El correo de PHP requiere un servidor de correo local para ejecutarse.

Editar: como el sitio de documentación de PHP para mail() revela, puede utilizar un paquete de correo de PEAR.

+0

... o usted podría utilizar uno de su ISP. – Shef

7

electrónico() de PHP no implementa el protocolo SMTP directamente. En cambio, depende de sendmail() MTA (servidor SMTP) o de un reemplazo como postfix o mstmp. Funciona bien en Unix siempre que se instale MTA.

En Windows (de PHP.net manual):

The Windows implementation of mail() differs in many ways from the Unix implementation. First, it doesn't use a local binary for composing messages but only operates on direct sockets which means a MTA is needed listening on a network socket (which can either on the localhost or a remote machine).

Por lo tanto - la moraleja de la historia - es necesario instalar el servidor de correo.

Sin embargo - si es para fines de prueba solamente - simplemente obtener una biblioteca PHP que realmente implementa el protocolo SMTP y utilice su dirección de correo electrónico Gmail regular para enviar mensajes de correo electrónico:

En lugar de utilizar el correo de PHP() utiliza uno de estos:

  1. PHPMailer
  2. SwiftMailer
  3. Zend \ mail

Estas bibliotecas PHP realidad implementan el protocolo SMTP, así uno puede enviar fácilmente mensajes de correo electrónico desde cualquier plataforma, sin servidor de correo electrónico instalado en la misma máquina: ejemplo

PHPMailer:

$mail->IsSMTP(); // telling the class to use SMTP 
$mail->Host  = "stmp.gmail.com"; // SMTP server 
$mail->SMTPDebug = 1;      // enables SMTP debug information (for testing) 
// 1 = errors and messages 
// 2 = messages only 
$mail->SMTPAuth = true;     // enable SMTP authentication 
$mail->SMTPSecure = "ssl";     // sets the prefix to the servier 
$mail->Host  = "smtp.gmail.com";  // sets GMAIL as the SMTP server 
$mail->Port  = 465;     // set the SMTP port for the GMAIL server 
$mail->Username = "[email protected]"; // GMAIL username 
$mail->Password = "pass111";   // GMAIL password 
$mail->SetFrom('[email protected]', 'My name is slim shady'); 
$mail->AddReplyTo("[email protected]","My name is slim shady"); 
$mail->Subject = "Hey, check out http://www.site.com"; 
$mail->AltBody = "Hey, check out this new post on www.site.com"; // optional, comment out and test 
$mail->MsgHTML($body); 
$address = "[email protected]"; 
$mail->AddAddress($address, "My name is slim shady"); 
Cuestiones relacionadas