2011-08-03 23 views
7

Sé que para enviar correo electrónico desde localhost en Windows, es necesario cambiar el servidor SMTP en php.ini sin embargo, esto sólo es válido en Windows:¿Cómo enviar correo electrónico desde localhost usando PHP en Linux

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

Entonces, ¿qué debo hacer para poder enviar correos electrónicos desde el sistema operativo Linux?

+0

En Linux por defecto es su sin necesidad de configuración para enviar correo. ¿Cuál es el resultado de la función de correo php? Pruebe el comando de correo en la terminal y compruebe que el correo esté configurado correctamente http://linux.about.com/od/commands/l/blcmdl1_Mail.htm – nidhin

+0

AFAIK, el comando de correo envía el correo electrónico de recepción de la misma manera que lo haría la perspectiva, no es un correo electrónico servidor – Kumar

+0

@nidhin mail ($ to, $ subject, $ message, $ headers); no da nada, no hay error, pero si $ envía = correo ($ a, $ asunto, $ mensaje, $ encabezados); y echo $ enviar; no muestra nada otra vez, por lo que es FALSO – Templar

Respuesta

1

Configuración sendmail o exim. Busque en su administrador de paquetes cualquiera de las opciones e instálelas. Senmail es común y configurarlo debería hacer el trabajo. El comando de correo en Linux es un MUA o agente de usuario de correo, un Agente de usuario de correo (MUA) es una aplicación que se usa para enviar y recibir correo electrónico, más como un cliente. Mientras que el agente de transferencia de correo transfiere correos electrónicos de una computadora a otra usando una arquitectura de aplicación cliente-servidor.

1

Debe haber un talón en su archivo php.ini ya, algo así como:

; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). 
sendmail_path = /usr/sbin/sendmail -t -i 

Compruebe que existe el comando especificado en el sistema de archivos y que tiene (se instala y) configura el MTA correctamente.

Si aún no tiene un MTA configurado, hay lots of MTAs disponible para sistemas Linux, recomendaría sendmail (comples/difícil de configurar pero con un gran rendimiento y una flexibilidad asombrosa) o postfix (más fácil de configurar, bueno) seguridad fuera de la caja).

Aprenda a usar el cliente cli 'mail' o ejecute un MUA diferente en el servidor para separar la configuración del MTA de la integración de PHP.

3

Si está ejecutando Debian y sus variantes (* buntu, etc.), puede instalar un servidor de correo ejecutando sudo tasksel install mail-server, que debería configurarlo con capacidades básicas de correo electrónico. Puede probar esto ejecutando en la línea de comandos echo 'body' | sendmail [email protected], o como han mencionado otros, mail($to, $subj, $msg) en PHP.

+0

Cuando estaba instalando he elegido por error ninguna configuración, ¿cómo puedo cambiar la configuración? Y tal vez pueda ofrecer cuál debería tomar – Templar

+0

y descubrí cómo cambiar la configuración, pero mi correo se entregó SOLAMENTE en 2 días, tal vez hice ajustes incorrectos, ¿me puede ayudar? – Templar

+0

¿Qué configuraciones usaste? – mzhang

1

Necesita instalar un MTA como sendmail (Algunas distribuciones como Debian parecen preferir exim, o tal vez postfix).

Usando aplicación SMTP de PHP es una mala idea, porque no va a respetar el requisito de reintento de RFC5321 "4.5.4.1 Envío de la estrategia:.. De correo que no se puede transmitir de inmediato deben estar en cola y periódicamente juzgado de nuevo por el remitente"

Esta violación de un requisito "DEBE" RFC generalmente reduce la solidez e interferirá con la interoperación correcta en la mayoría de los casos. Es por eso que necesita usar un MTA local (bajo Linux o Windows). Idealmente, necesita un mecanismo no SMTP para enviar mensajes al MTA, por lo que PHP deberá ejecutar "sendmail" para enviar correo. Tiende a hacer esto por defecto si se instala un MTA.

6

Sugeriría instalar ssmtp en lugar de instalar un servidor de correo completo como postfix. Si este es solo un entorno de prueba local, probablemente no necesite un MTA completo. ssmtp es muy fácil de instalar; solo debe proporcionar sus credenciales smtp para un servidor remoto. Hay un tutorial here.

1

Para enviar correos de localhost (WAMP, XAMP o LAMP) puede usar el paquete PHPMailer (descargue PHPMailer desde here).

Primero tiene que editar el "php.ini" Para encontrar este archivo, muestre el phpinfo usando el siguiente código del servidor WAMP. Crea un archivo php y agrega este contenido.

<?php 
    echo phpinfo(); 
?> 

Busque "Archivo de configuración cargada" Esa será la ruta a su php.ini.

En este archivo, elimine el; (coma semi) dado a la extensión = php_openssl.dll.

Después de descargar el paquete PHPMailerX.X.X

Extracto de> Copia la carpeta completa en la carpeta de proyecto.

En la carpeta de prueba hay un archivo llamado testemail.php.

Cambie el parámetro según sus necesidades. (Ejemplo dado a continuación).

Luego en el navegador escriba 127.0.0.1/PHPMailer/test/testemail.php.

Luego se mostrará el mensaje con éxito si se envía el correo electrónico, de lo contrario dará un mensaje de error. Ejemplo:

//add these codes if not written 

$mail->IsSMTP(); 
$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; 

//You have to change these parameters to your requirements. 
//…….code…. 

$mail->Username = “[email protected]”; // GMAIL username 
$mail->Password = “abcdefgh”; // GMAIL password 
//……..code….. There are many other functions to attach file etc.. For that refer doc file. 
$mail->AddAddress(“[email protected]”,”Nick name”); 
//…….code….. 
+0

Buen trabajo. Pero el enlace phpmailer está roto. ¡Gracias! –

1

Esto funcionó para mí en Linux Mint 17 para el envío de mensajes de correo electrónico desde el host local:

sudo apt-get install sendmail 
Cuestiones relacionadas