Senden von E-Mails mit unix-shell-scripting
Habe ich ein Skript schreiben, mails zu versenden mit der unix-shell-Skripte.
Das folgende Skript ermöglicht es mir, variable message-body.
Ist es möglich, einer Variablen unterliegt ein Teil im code unten?
#!/bin/bash
# Sending mail to remote user
sender="[email protected]"
receiver="[email protected]"
body="THIS IS THE BODY"
subj="THIS IS THE SUBJECT."
echo $body | mail $receiver -s "THIS IS THE SUBJECT" // this works fine
echo $body | mail $receiver -s $subj // ERROR - sends one mail with only
//"THIS" as subject and generates another error mail for the other three words
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast vergessen, die Anführungszeichen:
Beachten Sie, dass Sie müssen doppelte Anführungszeichen verwenden (sonst wird die variable nicht erweitert).
Nun ist die Frage: Warum doppelte Anführungszeichen um
$subj
und nicht$body
oder$receiver
. Die Antwort ist, dassecho
kümmert sich nicht um die Anzahl der Argumente. Also, wenn$body
erweitert, um mehrere Wörter,echo
wird, drucken Sie einfach alle von Ihnen mit einem einzigen Leerzeichen dazwischen. Hier die Zitate würde nur von Belang, wenn Sie wollten, Sie zu erhalten doppelte Leerzeichen.Als für
$receiver
funktioniert dies, da es dehnt sich nur um ein einziges Wort (keine Leerzeichen). Es brechen würde, die für E-mail-Adressen wieJohn Doe <[email protected]>
.Alte Frage, ich weiß, aber wahrscheinlich immer beliebter. Meine Lieblings-Weg, bietet mehr Flexibilität und gearbeitet hat, auf jedem UNIX/POSIX-Umgebung habe ich eingesetzt, seit Anbeginn meiner UNIX verwenden. Nur den sendmail-Pfad kann sich ändern, um die lokale Umsetzung.
From
" dann ein nicht-Leerzeichen, reserviert einen internen "neue Nachricht" - marker in bündeln von Nachrichten. Stick-ein extra-Raum in der zu vermeiden, das abschneiden Ihrer Nachrichten.Obwohl für maximale Mobilität auf jedem system mit perl-ersetzen sed mit:
perl -p -e 's/^From ([^ ])/From $1/'
als sed in einigen UNIX-Systemen ist nicht wirklich bis zu dem, was ich mag und vor allem, wennecho "From me"
bekommt einen Dritten Raum, wenn Sie Hintergrundmusik in Ihrem lokalen sed."Long Name" <[email protected]>
Bekommen aufwendig und Sie kann Anlagen senden, message-Codierung, verschiedene E-mail-Formaten multipart messagesm und mehr. Tun Sie etwas Forschung auf dies und achten Sie auf die Anzahl der Bindestriche benötigt, die in verschiedenen teilen der Nachricht.
können Sie mailx und immer Ihre Anführungszeichen um Variablen
mailx wird nicht in viele Umgebungen. aber Sie können die gleiche Funktionalität mit E-mail/sendmail