L'envoi d'un mail à partir d'un linux shell script
Je veux envoyer un e-mail à partir d'un Linux Shell script. Qu'est-ce que le standard de la commande pour ce faire et dois-je configurer un serveur de noms?
- Essayez de demander sur le super-Utilisateur [superuser.com ] ou, mieux encore, Unix et Linux SE [unix.stackexchange.com ].
- Double Possible de > Shell script pour envoyer des emails
Vous devez vous connecter pour publier un commentaire.
Si le serveur est bien configuré, par exemple, il a une place et en cours d'exécution MTA, vous pouvez simplement utiliser la commande mail.
Par exemple, pour envoyer le contenu d'un fichier, vous pouvez le faire:
man mail
pour plus de détails.sudo apt-get install mailutils
et sélectionnez site Internet: Courriel est envoyé et reçu directement à l'aide de SMTP..Si vous voulez un endroit propre et simple approche de bash, et vous ne voulez pas utiliser
cat
,echo
, etc., la façon la plus simple serait:<<<
est utilisé pour rediriger l'entrée standard. Il a été une partie de bash pour un long moment.cat << END
...END | mail -s "subject" [email protected]
Si les deux exim et ssmtp sont en cours d'exécution, vous pouvez entrer dans les ennuis. Donc, si vous voulez juste pour l'exécution d'un simple MTA, juste pour avoir un simple client smtp pour envoyer des notifications par courrier électronique pour insistance, vous devez purger le finalement préinstallé MTA comme exim ou postfix premier et le réinstaller ssmtp.
Alors c'est assez simple, la configuration de seulement 2 fichiers (revaliases et ssmtp.conf) - Voir ssmtp doc - , et l'utilisation de votre bash ou bourne script est comme :
Évidemment, n'oubliez pas d'ouvrir votre pare-feu de sortie pour le port smtp (25).
Une autre option pour dans un script bash:
/tmp/mailtest
est écrasé à chaque fois ce script est utilisé.En général, vous voulez les utiliser
mail
commande pour envoyer votre message à l'aide de MTA local (qui va le livrer à l'aide de SMTP de destination ou tout simplement de l'avant dans le plus puissant serveur SMTP, par exemple, à votre fournisseur de services internet). Si vous ne disposez pas d'un MTA local (même si c'est un peu inhabituel pour un système de type UNIX d'omettre un), vous pouvez soit utiliser quelques minimaliste MTA comme ssmtp.ssmtp
est assez facile à configurer. Fondamentalement, vous aurez juste besoin de spécifier l'emplacement de votre fournisseur de serveur SMTP est:Une autre option est d'utiliser l'un des myriades de scripts qui vient de se connecter au serveur SMTP directement et essayer de poster un message il y a, comme Smtp-Auth-E-Mail-Script, smtp-cli, SendEmail, etc.
D'admettre que vous souhaitez utiliser certaines de serveur smtp, vous pouvez le faire:
Changement
somehost
,someport
, etsomeaccount@somedomain
à valeurs réelles que vous pouvez utiliser.Pas de cryptage, et aucune authentification n'est effectuée dans cet exemple.
mailx
n'est pas installé?Vous n'avez même pas besoin d'un MTA. Le protocole SMTP est assez simple à écrire directement à votre serveur SMTP. Vous pouvez même communiquer sur SSL/TLS si vous avez le paquet OpenSSL installé. Vérifiez ce post: https://33hops.com/send-email-from-bash-shell.html
Ci-dessus est un exemple sur la façon d'envoyer du texte/html e-mails qui vont travailler hors de la boîte. Si vous souhaitez ajouter des pièces jointes à la chose peut être un peu plus compliqué, vous devrez base64 encode les fichiers binaires et les intégrer entre les frontières. C'est un bon endroit pour commencer à étudier: http://forums.codeguru.com/showthread.php?418377-Send-Email-w-attachments-using-SMTP
Sur linux, mail utilitaire peut être utilisé pour envoyer de pièce jointe avec l'option "-a". Aller à travers l'homme pages à lire à propos de l'option. Pour exemple de code suivant va envoyer une pièce jointe :
mail-s "C'EST l'OBJET" -un attachment.txt [email protected] <<< "Salut mon Pote, s'il vous Plaît trouver des rapports d'échec."
La
mail
commande ne fait que (qui aurait deviné ;-). Ouvrez votre coquille et entrezman mail
pour obtenir la page de manuel de lamail
de commande pour toutes les options disponibles.vous pouvez utiliser l'option "e-mail" ou "emailx' de la commande.
(1) $ vim /etc/mail.rc # ou # vim /etc/clou.rc
Parce que si il n'est pas envoyé à partir d'un compte autorisé, e-mail obtiendrez à la liste de courrier indésirable.
(2)
$ echo "Pls n'oubliez pas de supprimer les modules sujets!" | mail-s "déchets des sujets" -un a.txt [email protected] #envoyer à un groupe d'utilisateur '[email protected]'