it-swarm.com.de

Wie kann ich den Befehl Von E-Mail-Adresse für Mailx einstellen?

Ich arbeite an einem KornShell (ksh) -Skript, das auf einem Solaris-Server ausgeführt wird und eine E-Mail sendet, wenn die Fehlerbedingung erfüllt ist. Ich versende die E-Mail über mailx. 

Frage: Wie lege ich die E-Mail-Adresse "Von" im Befehl mailx fest?

Aktueller Code:

echo ${msg_txt} | mailx -s "Script Failure" ${to_email}

Hinweis: Der Befehl funktioniert gut, das "Von" ist jedoch der Name des Benutzers, unter dem das Skript ausgeführt wird, und ich möchte dafür an eine andere E-Mail-Adresse.

Wie würde ich das schaffen? 

31
AieshaDot

Sie können die "-r" -Option verwenden, um die Absenderadresse einzustellen:

mailx -r [email protected] -s ...
36
sth

Die Option "-r" ist auf meinen Systemen ungültig. Ich musste eine andere Syntax für das Feld "Von" verwenden.

-a "From: Foo Bar <[email protected]>"
34
Finch_Powers

Wenn Sie auch Ihren echten Namen in das from-Feld aufnehmen möchten, können Sie das folgende Format verwenden

mailx -r "[email protected] (My Name)" -s "My Subject" ...

Wenn Sie nicht-ASCII-Zeichen in Ihrem Namen enthalten, wie z. B. Mein AEÆoeøaaå (Æ = C3 86, ø = C3 B8, å = C3 A5), müssen Sie diese wie folgt codieren:

mailx -r "[email protected] (My =?utf-8?Q?AE=C3=86oe=C3=B8aa=C3=A5?=)" -s "My Subject" ...

Hoffe, das kann jemandem eine Stunde harte Arbeit/Forschung ersparen!

22
Rune

Auf Debian, wo bsd-mailx standardmäßig installiert ist, funktioniert die -r-Option nicht. Sie können jedoch stattdessen mailx -s subject [email protected] -- -f [email protected] verwenden. Entsprechend der Manpage können Sie sendmail-Optionen nach -- angeben.

10
Marki555

Das Paket nail bietet eine erweiterte Mailx-ähnliche Schnittstelle. Es enthält die Option -r.

Bei der Installation des Pakets mailx erhalten Sie ein Programm namens mail, das die Optionen mailx nicht unterstützt.

1
Neik

Auf Ubuntu Bionic 18.04 funktioniert dies wie gewünscht:

$ echo -e "testing email via yourisp.com from command line\n\nsent on: $(date)" | mailx --append='FROM:Foghorn Leghorn <[email protected]>' -s "test cli email $(date)" -- [email protected]

0
woohoo

Dieses Syntaxproblem stieß gerade auf einem CentOS 7-Rechner.

Auf einer sehr alten Ubuntu-Maschine, die mail ausführt, lautet die Syntax für eine gut verfasste E-Mail

echo -e "$body" | mail -s "$subject" -a "From: Sender Name <$sender>" "$recipient"

Bei einer CentOS 7-Box, die mit mailx installiert wurde, ist dies jedoch etwas anderes:

echo -e "$body" | mail -s "$subject" -S "from=Sender Name <$sender>" "$recipient"

Beratung man mail zeigt an, dass -r veraltet ist und die Absenderadresse von 'Abs' jetzt direkt mit -S "variable=value" festgelegt werden sollte.

In diesen und den folgenden Beispielen definiere ich $sender als "Sender Name <[email protected]>" und $recipients als "[email protected]" wie in meinem Bash-Skript.

Wenn Sie versuchen, den Inhalt der E-Mail in Ihrem Skript zum Zeitpunkt des Versendens der E-Mail zu generieren, kann es passieren, dass Sie ein seltsames Verhalten feststellen, bei dem der E-Mail-Text stattdessen als Binärdatei angehängt wird ("ATT00001"). bin "," application/octet-stream "oder" noname "(abhängig vom Client).

Mit diesem Verhalten behandelt Heirloom mailx nicht erkannte/Steuerzeichen in der Texteingabe. (Weitere Informationen: https://access.redhat.com/solutions/1136493 verweist auf die mailx-Manpage für die Lösung.)

Um dies zu umgehen, habe ich eine Methode verwendet, die die generierte Ausgabe durch tr leitet, bevor sie an mail übergeben wird. Außerdem wird der Zeichensatz der E-Mail angegeben:

echo -e "$body" | tr -d \\r | mail -s "$subject" -S "from=$sender" -S "sendcharsets=utf-8,iso-8859-1" "$recipients"

In meinem Skript lösche ich auch explizit das Gebietsschema vorher, da es als Cronjob ausgeführt wird (und Cron erbt keine Umgebungsvariablen):

LANG="en_GB.UTF8" ; export LANG ;

(Eine alternative Methode zum Festlegen von Gebietsschemas für Cronjobs wird hier diskutiert.)

Weitere Informationen zu diesen Problemumgehungen finden Sie unter https://stackoverflow.com/a/29826988/253139 und https://stackoverflow.com/a/3120227/253139 .

0
Chris Woods

Unter macOS Sierra hat das Erstellen von ~/.mailrc mit dem SMTP-Setup den Trick:

set smtp-use-starttls
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set [email protected]
set smtp-auth-password=yourpass

Dann senden Sie eine Mail von der CLI:

echo "your message" | mail -s "your subject" [email protected]
0
kitschmaster