Tengo un comando cron que ejecuta un archivo y estoy tratando de configurar la salida para que me envíe un correo electrónico. Lo uso con scripts de terceros que no quiero modificar los archivos directos, por lo que necesito canalizar la salida en lugar de modificar el PHP.
Estoy migrando de un servidor que usa mail
a un servidor que usa sendmail
. Estoy luchando por descubrir cómo enviar correctamente un asunto a sendmail a través de una línea de comando.
/usr/local/bin/php -f /path/to/file.php 2>&1 | /usr/sbin/sendmail -s "My Test Email Subject" [email protected]
sendmail
es el binario que utiliza su sistema para enrutar el correo que le envíamail
. Es parte de un conjunto de programas como sendmail , postfix , exim , etc. Por lo tanto, debe instalar el paquete apropiado para el correo . Entonces díganos la distribución de Linux que está utilizando.Respuestas:
Eso está mal.
Deberías tener un
mail
comando en algún lugar. Se podría llamarmailx
. Debería estar en el/bin/
directorio. Como práctica estándar, los scripts php nunca deberían llamar a nada en/sbin
o/usr/sbin
. Los programas sbin son típicamente para root.Además, php tiene una función de correo incorporada .
fuente
mail
omailx
puede serMail
. Pero incluso si no existen, puede instalar mutt y ejecutarmutt -x
cuál emulamailx
.which mail
y regresó/bin/mail
.En mis sistemas Debian (que tienen Exim en lugar de sendmail "real", pero todavía tienen un binario de sendmail por compatibilidad), cuando quiero enviar correo desde un script hago algo equivalente a:
Tenga en cuenta que la línea en blanco es importante.
fuente
sendmail -t <<EOF
sin embargo?sendmail
fallaran y escribieran en STDERR, ¿cómo podría capturar esto como una variable para usar más adelante en el script?echo = El cuerpo del correo electrónico.
sed stuff = Aplica los encabezados del correo electrónico y una importante línea doble entre el cuerpo y los encabezados.
sendmail -t = lo canaliza directamente a través de sendmail.
fuente
fuente