2011-03-20 25 views
5

Cuando uso la terminal para enviar un correo electrónico, las cosas funcionan correctamente. Yo uso el siguiente comando:cómo saber si PHP y sendmail están trabajando juntos?

echo "Subject: test" | /usr/lib/sendmail -v [email protected] 

Pero cuando intento esto en PHP:

PHP DOCUMENTACIÓN:

<?php bool mail (string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]]) ?> 

MI APLICACIÓN:

<?php mail("[email protected]", "my topic", "my message contents", "From: [email protected]"); ?> 

, entonces no es trabajando. ¿Porqué es eso? ¿Supongo que tiene que ver con el archivo php.ini de PHP?

Todo lo configuran:

  • php.ini abierta:

    nano /etc/php5/apache2/php.ini

  • sendmail_path uncomment y escribir:

    sendmail_path = /usr/sbin/sendmail

  • uncomment sendmail_from y escribir:

    sendmail_from = [email protected]

  • reiniciar Apache:

    /etc/init.d/apache2 restart

Cuál puede ser el caso? Para dejar esto más claro: ¡Quiero que PHP pueda enviar correos electrónicos!

EDIT: función

  • El PHP mail() devuelve un FALSO.
  • de php.ini: cambiar /usr/sbin/sendmail en /usr/lib/sendmail (o al revés) no parece hacer ninguna diferencia
  • de comando en el terminal: cambiar /usr/sbin/sendmail en /usr/lib/sendmail (o al revés) no parece hacer ningún diferencia ya sea
  • Envié mensajes tanto a mi propio dominio como a Gmail, ambos sin mensajes en la carpeta de correo no deseado.

Los ficheros log de Sendmail:

[email protected]:/var/log# cat mail.warn 

[email protected]:/var/log# cat mail.err 

[email protected]:/var/log# cat mail.log 
Mar 20 10:17:09 machine sendmail[12249]: p2K9H2R9012249: from=root, size=0, class=0, nrcpts=1, [email protected] 
Mar 20 10:17:20 machine sendmail[12253]: p2K9HImw012253: from=root, size=0, class=0, nrcpts=0, [email protected] 
Mar 20 10:17:25 machine sendmail[12255]: p2K9HOAC012255: from=root, size=0, class=0, nrcpts=1, [email protected] 
Mar 20 10:20:00 machine sendmail[12277]: p2K9K09k012277: from=root, size=14, class=0, nrcpts=3, msgid=<[email protected]>, [email protected] 
Mar 20 10:20:00 machine sm-mta[12279]: p2K9K0Ge012279: <[email protected]>... User unknown 
Mar 20 10:20:00 machine sendmail[12277]: p2K9K09k012277: to=-r, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=90014, relay=[127.0.0.1] [127.0.0.1], dsn=5.1.1, stat=User unknown 
Mar 20 10:20:00 machine sm-mta[12279]: p2K9K0Ge012279: from=<[email protected]>, size=290, class=0, nrcpts=2, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] 
Mar 20 10:20:00 machine sm-mta[12279]: STARTTLS=client, relay=gmail-smtp-in.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=RC4-SHA, bits=128/128 
Mar 20 10:20:02 machine sm-mta[12279]: p2K9K0Ge012279: to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:00:02, xdelay=00:00:02, mailer=esmtp, pri=60290, relay=gmail-smtp-in.l.google.com. [74.125.77.27], dsn=2.0.0, stat=Sent (OK 1300612802 w59si3196382eeh.92) 
Mar 20 10:20:02 machine sm-mta[12279]: STARTTLS=client, relay=aspmx.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=RC4-SHA, bits=128/128 
Mar 20 10:20:04 machine sm-mta[12279]: p2K9K0Ge012279: to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:00:04, xdelay=00:00:02, mailer=esmtp, pri=60290, relay=aspmx.l.google.com. [74.125.79.27], dsn=2.0.0, stat=Sent (OK 1300612804 p50si3196335eei.44) 
Mar 20 10:20:04 machine sendmail[12277]: p2K9K09k012277: [email protected],[email protected], ctladdr=root (0/0), delay=00:00:04, xdelay=00:00:04, mailer=relay, pri=90014, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (p2K9K0Ge012279 Message accepted for delivery) 
Mar 20 10:20:04 machine sendmail[12277]: p2K9K09k012277: p2K9K09l012277: DSN: User unknown 
Mar 20 10:20:04 machine sm-mta[12279]: p2K9K0Gg012279: from=<>, size=1921, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] 
Mar 20 10:20:05 machine sm-mta[12279]: p2K9K0Gg012279: to=<[email protected]>, delay=00:00:01, xdelay=00:00:01, mailer=local, pri=31921, dsn=2.0.0, stat=Sent 
Mar 20 10:20:05 machine sendmail[12277]: p2K9K09l012277: to=root, delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=31038, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (p2K9K0Gg012279 Message accepted for delivery) 
Mar 20 10:25:11 machine sendmail[12321]: p2K9PBC3: from=root, size=14, class=0, nrcpts=1, msgid=<[email protected]>, [email protected] 
Mar 20 10:25:11 machine sm-mta[12323]: p2K9PBLe: from=<[email protected]>, size=318, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] 
Mar 20 10:25:11 machine sm-mta[12323]: STARTTLS=client, relay=gmail-smtp-in.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=RC4-SHA, bits=128/128 
Mar 20 10:25:12 machine sm-mta[12323]: p2K9PBLe: to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:00:01, xdelay=00:00:01, mailer=esmtp, pri=30318, relay=gmail-smtp-in.l.google.com. [74.125.77.27], dsn=2.0.0, stat=Sent (OK 1300613112 u12si3204796eeh.99) 
Mar 20 10:25:12 machine sendmail[12321]: p2K9PBC3: [email protected], ctladdr=root (0/0), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30014, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (p2K9PBLeMessage accepted for delivery) 
Mar 20 11:00:17 machine sendmail[12567]: p2KA0HX9012567: from=root, size=20, class=0, nrcpts=1, msgid=<[email protected]>, [email protected] 
Mar 20 11:00:17 machine sm-mta[12568]: p2KA0HNn012568: from=<[email protected]>, size=324, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] 
Mar 20 11:00:17 machine sm-mta[12568]: STARTTLS=client, relay=gmail-smtp-in.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=RC4-SHA, bits=128/128 
Mar 20 11:00:18 machine sm-mta[12568]: p2KA0HNn012568: to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:00:01, xdelay=00:00:01, mailer=esmtp, pri=30324, relay=gmail-smtp-in.l.google.com. [74.125.77.27], dsn=2.0.0, stat=Sent (OK 1300615218 w59si3268114eeh.65) 
Mar 20 11:00:18 machine sendmail[12567]: p2KA0HX9012567: [email protected], ctladdr=root (0/0), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30020, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (p2KA0HNn012568 Message accepted for delivery) 
Mar 20 11:16:23 machine sendmail[12675]: p2KAGNg8012675: from=www-data, size=188, class=0, nrcpts=0, msgid=<[email protected]>, [email protected] 
[email protected]:/var/log# 

Edit2:

he encontrado la solución!

Era la configuración en php.ini, como esperaba.

En php.ini:

sendmail_path = /usr/sbin/sendmail **-t -i**

Ahora, también le permite intentar comprender por qué, porque me encontré con la -t en this site y luego me encontré con la -i en el propio archivo php.ini. ¿Qué significa "t" y "i"?

-t Extraiga los destinatarios de los encabezados de los mensajes. Estos se agregan a los destinatarios especificados en la línea de comando. Con las versiones de Postfix anteriores a 2.1, esta opción requiere que no se especifique ninguna dirección de destinatario en la línea de comando.

-i Al leer un mensaje de entrada estándar, no trate una línea con solo a. carácter como el final de la entrada.

source

esperanza que podía ayudar a aquellos de ustedes que corría a problemas similares.

+2

"no funciona" no es una buena información. ¿Qué mensajes de error recibes? ¿Qué tienes en tus registros? – Mat

+2

Su ejemplo de terminal usa '/ usr/lib/sendmail' pero usted configuró'/usr/sbin/sendmail' en el php.ini – mario

+2

Primer control de cordura: ¿Has marcado la carpeta de spam? En segundo lugar, ¿el método devuelve 'TRUE' o' FALSE'? 'TRUE' significa' mail' al menos fue capaz de * intentar * enviar el correo electrónico. – nitro2k01

Respuesta

1

¿Cuál puede ser el caso? Para dejar esto más claro: ¡Quiero que PHP pueda enviar correos electrónicos!

El caso o mejor la causa en su caso es que la función de correo() y sendmail son dos pares de zapatos diferentes. No están relacionados entre sí per se.

Solo porque puede enviar correos electrónicos utilizando el programa sendmail esto no significa que la función php mail() también enviará correos electrónicos.

Lo que enfrenta es un problema de configuración de su instalación de php. PHP es bastante bueno para enviar correos electrónicos por defecto, pero PHP no puede conocer todas las configuraciones, así que en caso de que mail() falle es necesario que compruebe si ha configurado correctamente PHP para enviar correos electrónicos.

Un buen comienzo para aprender más qué configurar, obtener un montón de notas y avisos, así como información relacionada es el manual de PHP: mail() function.

Un primer control de cordura, como ya han comentado otros, es comprobar el valor de retorno de la función de correo(). Si es falso, PHP sabe que ha fallado el envío de correo.

Si es cierto y aún no recibe el correo electrónico (fuera), entonces algún otro componente no es útil para transportar el correo electrónico más adelante. Debe verificar toda la cadena del transporte y, para hacerlo en negrita, puede tener múltiples errores en su configuración general que le impidan enviar correos electrónicos a través de PHP, incluso en caso de que pueda enviar algunos desde el shell.

Si esto es demasiado complicado para usted, le sugiero que se ponga en contacto con un administrador del sistema que puede ayudarlo a resolver su problema.

BTW puede escribir su propia envoltura y enviar correos electrónicos con un comando de shell: shell_exec, tenga cuidado.

+0

administrador del sistema que puede ayudarlo a resolver su problema. que a sea un primero; p –

0

Puede comenzar comprobando el archivo de registro de correo. Su ubicación depende de su sistema, pero se puede encontrar en /var/log/mail.log en una instalación estándar de Ubuntu. Deberías intentar ejecutar tu código PHP y luego verificar si se registra algo.

+0

Gracias Ewan Heming, acabo de agregar mi archivo de registro – hsmit

+0

¿El archivo de registro le dice algo? – hsmit

+0

¿Intentó volver a ejecutar el script PHP para ver si se le agregó una nueva línea? –

Cuestiones relacionadas