J'ai une commande cron qui exécute un fichier et j'essaie de configurer la sortie pour qu'elle m'envoie un e-mail. J'utilise cela avec des scripts tiers que je ne veux pas modifier les fichiers directs, j'ai donc besoin de diriger la sortie au lieu de modifier le PHP.
Je migre d'un serveur qui utilise mail
vers un serveur qui utilise sendmail
. J'ai du mal à savoir comment envoyer correctement un sujet à sendmail via une ligne de commande.
/usr/local/bin/php -f /path/to/file.php 2>&1 | /usr/sbin/sendmail -s "My Test Email Subject" [email protected]
sendmail
est le binaire utilisé par votre système pour acheminer le courrier qui lui est soumis parmail
. Il fait partie d'une suite de programmes comme sendmail , postfix , exim , etc. Vous devez donc installer le package approprié pour le courrier . Dites-nous donc la distribution Linux que vous utilisez.Réponses:
C'est faux.
Vous devriez avoir une
mail
commande quelque part. Cela pourrait s'appelermailx
. Doit être dans le/bin/
répertoire. En règle générale, les scripts php ne doivent jamais appeler quoi que ce soit dans/sbin
ou/usr/sbin
. Les programmes sbin sont généralement destinés à root.De plus, php a une fonction de messagerie intégrée .
la source
mail
oumailx
peut-êtreMail
. Mais même si ceux-ci n'existent pas, vous pouvez installer mutt et exécutermutt -x
qui émulemailx
.which mail
et il est revenu/bin/mail
.Sur mes systèmes Debian (qui ont Exim plutôt que "vrai" sendmail, mais qui ont toujours un binaire sendmail pour la compatibilité), quand je veux envoyer du courrier à partir d'un script, je fais quelque chose d'équivalent à:
Notez que la ligne vierge est importante.
la source
sendmail -t <<EOF
Mais pourquoi pas ?sendmail
devait échouer et écrire dans STDERR, comment pourrais-je capturer cela comme une variable à utiliser plus tard dans le script?echo = Le corps de l'e-mail.
sed stuff = Applique les en-têtes des e-mails et une double ligne importante entre le corps et les en-têtes.
sendmail -t = Pipes directement via sendmail.
la source
la source