je luttais avec le même problème (avec messagerie) dans l'un des crochets post_receive de mon git et enfin j'ai découvert que sendmail fonctionne mieux pour ce genre de choses, surtout si vous savez un peu comment les e-mails sont construits (et il semble que vous le sachiez). Je sais que cette réponse arrive très tard, mais peut-être qu'elle sera utile aux autres aussi. J'ai fait usage de l'opérateur heredoc et de l'utilisation de la fonctionnalité, qu'il développe des variables, de sorte qu'il peut également exécuter des scripts en ligne. Il suffit de vérifier cela (script bash):
#!/bin/bash
recipients=(
'[email protected]'
'[email protected]'
# '[email protected]'
);
sender='[email protected]';
subject='Oh, who really cares, seriously...';
sendmail -t <<-MAIL
From: ${sender}
`for r in "${recipients[@]}"; do echo "To: ${r}"; done;`
Subject: ${subject}
Content-Type: text/html; charset=UTF-8
<html><head><meta charset="UTF-8"/></head>
<body><p>Ladies and gents, here comes the report!</p>
<pre>`mysql -u ***** -p***** -H -e "SELECT * FROM users LIMIT 20"`</pre>
</body></html>
MAIL
Note de backticks dans la partie MAIL pour générer une sortie et rappelez-vous que <<-
bandes opérateur uniquement les onglets (et non des espaces) depuis le début de lignes, donc dans ce cas copier-coller ne fonctionnera pas (vous devez remplacer l'indentation par des onglets appropriés). Ou utilisez l'opérateur <<
et ne faites aucune indentation. J'espère que cela aidera quelqu'un. Bien sûr, vous pouvez utiliser des guillemets en dehors de la partie MAIL et enregistrer la sortie dans une variable, que vous pouvez ensuite utiliser dans la partie MAIL - question de goût et de lisibilité. Et je sais, #!/bin/bash
ne fonctionne pas toujours sur tous les systèmes.
Les lecteurs de réponses à cette question méfiez-vous: il existe plusieurs programmes différents appelés 'mail', par exemple' Heirloom-mailx' et 'bsd-mailx' sur Debian jessie . Si une commande 'mail' d'une réponse ne fonctionne pas pour vous, vous utilisez probablement le mauvais' mail'. Reportez-vous au gestionnaire de packages de votre distribution pour installer le package correct et utilisez le nom spécifique de ce binaire (par exemple 'bsd-mailx' sur Debian) pour résoudre ce problème. Plus de détails sur ceci ici: http://heirloom.sourceforge.net/mailx_history.html –