2009-08-18 10 views
24

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 sende die E-Mail über mailx.Wie setzen Sie die Von E-Mail-Adresse für mailx Befehl?

Frage: Wie setze ich die "Von" E-Mail-Adresse auf den Befehl mailx?

Aktuelle Code:

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

Hinweis: Der Befehl funktioniert gut, aber die „Aus“ ist der Name des Benutzers ich das Skript bin mit wie und ich würde dafür gerne auf einem anderen E-Mail Adresse.

Wie würde ich das erreichen?

Antwort

31

Sie können die Option „-r“ verwenden, um die Absenderadresse zu setzen:

mailx -r [email protected] -s ... 
+0

@sth thx, die funktioniert! – AieshaDot

21

Falls Sie auch Ihren wirklichen Namen enthalten sein sollen in der Von-Feld, Sie das folgende Format verwenden können

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

Wenn Sie in Ihnen Namen nicht-ASCII-Zeichen haben passieren, wie My AEÆoeøaaå (Æ = C3 86, ø = C3 B8, W = C3 A5), müssen Sie sie wie folgt kodieren:

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

Hoffe das kann jemand eine Stunde harte Arbeit/Forschung sparen!

+0

Falls jemand neugierig ist, ist das '=? Utf-8? ...? =' Bit ein [MIME codiertes Wort] (http://en.wikipedia.org/wiki/MIME#Encoded-Word). –

+0

Der echte Name Teil davon funktioniert nicht für mich auf Solaris. Die Nachricht wird erfolgreich gesendet und hat die richtige E-Mail-Adresse, aber jede E-Mail, von der ich sie sende, wird nur auf die E-Mail-Adresse reduziert. – peabody

+0

@Rune Ihre Methode kehrt zurück (Mein AE ?? oe ?? aa ??) irgendeine Idee warum? – RafaSashi

8

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

+0

Danke für den Tipp, rate mal, ich hätte die Synopse genauer lesen sollen. Leider mit schrecklichen bsdutils stecken, froh, einen Workaround zu haben. – 4ae1e1

+3

Leider hat das [DSA 3104-1 Sicherheitsupdate] (https://www.debian.org/security/2014/ds-3104) diese Methode durchbrochen. Stattdessen kann das Paket "heirloom-mailx" installiert werden, das die Option "-r" bereitstellt. – praseodym

+0

Ich habe gerade 'bsd-mailx' Version' Version: 8.1.2-0.20160123cvs-2' installiert, allerdings auf einem Ubuntu 16.04 System; die Option '-r' funktioniert. – ssc

28

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

+1

In meinem Fall, auf Ubuntu 16.04, mit Ihrer Option "-a", zeigt es den "Foo Bar" Namen in der empfangenen Mail, aber eine Antwort auf die erhaltene Mail bietet stattdessen meine Gmail-E-Mail-Adresse als SMTP-Login verwendet der 'foo.bar @ someplace.com' eins. – Stephane

1

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

Auf Centos 5 installieren Sie das Paket mailx gibt Ihnen ein Programm namens mail, die die mailx Optionen nicht unterstützt.

0

Auf macOS Sierra, die Schaffung ~/.mailrc mit smtp Setup hat 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 Mail von CLI zu senden:

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