2011-07-06 31 views
6

Instalé sendmail con PHP y apache en Ubuntu. Cuando intento la siguiente línea de comandoPHP sendmail funciona en línea de comandos de Ubuntu, pero no desde un archivo php

php -r "mail('[email protected]', 'test', 'test')"' 

envía correctamente el correo electrónico.

Sin embargo, la ejecución del "test_send_mail.php" archivo con:

<?php 
mail('[email protected]', 'test', 'test') 
?> 

no envía un correo electrónico.

El intento fallido con el archivo .php genera la entrada de registro:

`Jul 5 21:24:47 www sendmail[25603]: p661OlL7025603: from=www-data, size=106, class=0, 

nrcpts = 0, msgstr = < [email protected]>, el relé = www-data @ localhost

el intento exitoso con la línea de comandos genera la entrada de registro:

Jul 5 21:22:40 www sm-mta[25533]: p661MevV025533: from=<[email protected]>, 
size=352, class=0, nrcpts=1, msgid=<[email protected]>, 
proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] 

¿alguien tiene alguna idea de lo que podría estar sucediendo? ¡Gracias por tu ayuda!

+1

PHP 'función mail()' es en realidad bastante limitado y peculiar. Si tiene la intención de enviar correos electrónicos a usuarios de su sitio web o para ellos, debe usar una biblioteca adecuada, como PHPMailer. Esto te brinda cosas como el manejo de archivos adjuntos y un mejor soporte de encabezados. – staticsan

+0

Vamos, el correo puede enviar cualquier cosa, incluidos archivos adjuntos, etc. Hay más información sobre el transporte para enviar correos electrónicos. En el caso de PHPMailer, principalmente utiliza SMTP mientras que la función de correo usa linux sendmail programm. Y parece que está configurado para usuario root, pero no para www-data –

Respuesta

1

PHP tiene separadas ini archivos en función del entorno:

  • cli/php.ini
  • cgi/php.ini
  • php.ini

asegúrese de que ha hecho todos los cambios apropiados en todos los archivos, cgi generalmente se usa para Nginx y Lighttpd, pero replica la configuración en todos los 3 para estar seguro.

También puede ejecutar la función phpinfo(); para ver qué configuraciones están siendo utilizadas en realidad.

también esto puede ser la solución directa: PHP mail issue with www-data

0

Su intento fallido es el envío de correo electrónico como usuario del servidor web. Probablemente no quieras hacer eso. La clave es pasar más parámetros al mail() para anular este tipo de valores predeterminados a medida que entrega el correo electrónico a su inyector.

Mire en los comentarios en la página de manual para mail() y habrá mucha ayuda para hacer eso.

Cuestiones relacionadas