Senden von E-Mails mit Hilfe von Unix Shell Scripting

8

Ich muss ein Skript schreiben, um Mails mit Unix-Shell-Skripten zu versenden.

Das folgende Skript ermöglicht es mir, einen variablen Nachrichtentext zu haben.

Ist es möglich, einen variablen Subjektteil im folgenden Code zu haben?

%Vor%     
kk. 23.11.2009, 09:23
quelle

4 Antworten

17

Sie haben die Anführungszeichen vergessen:

%Vor%

Beachten Sie, dass Sie doppelte Anführungszeichen verwenden müssen (andernfalls wird die Variable nicht erweitert).

Jetzt ist die Frage: Warum doppelte Anführungszeichen um $subj und nicht $body oder $receiver . Die Antwort ist, dass echo sich nicht um die Anzahl der Argumente kümmert. Wenn also $body auf mehrere Wörter erweitert wird, druckt echo nur alle von ihnen mit einem einzigen Leerzeichen dazwischen. Hier wären die Zitate nur von Bedeutung, wenn Sie doppelte Leerzeichen beibehalten möchten.

Wie bei $receiver funktioniert das, weil es nur auf ein einziges Wort (keine Leerzeichen) erweitert wird. Es würde für Mail-Adressen wie John Doe <[email protected]> brechen.

    
Aaron Digulla 23.11.2009, 09:25
quelle
3

Alte Frage, ich weiß, aber wahrscheinlich immer populär. Mein bevorzugter Weg bietet mehr Flexibilität und hat an jeder UNIX / POSIX-Umgebung gearbeitet, die ich seit Beginn meiner UNIX-Nutzung benutzt habe. Nur der sendmail-Pfad kann sich ändern, um die lokale Implementierung zu erfüllen.

%Vor%
  • In vielen Umgebungen werden Zeilen, die mit " From " beginnen und dann ein Nicht-Leerzeichen sind, als interne Markierung "Neue Nachricht beginnen" in Nachrichtenbündeln reserviert. Fügen Sie zusätzlichen Speicherplatz ein, um das Abschneiden der Nachrichten zu vermeiden. Obwohl für maximale Portabilität auf jedem System mit perl ersetzen sed mit: perl -p -e 's/^From ([^ ])/From /' wie sed in einigen UNIX-Systemen ist nicht wirklich, was ich mag und vor allem, wenn echo "From me" bekommt ein drittes Leerzeichen wenn piped in Ihrem lokalen sed.
  • Eine Zeile, die nur aus einem Punkt besteht, ist der klassische Nachrichtenende-Marker für die sendmail-Agentenfamilie. Ändern Sie solche Zeilen so, dass sie in einem Leerzeichen enden ... sieht genauso aus, löst aber keine Trunkierungen am Ende der Nachricht mehr aus.
  • Sie können vollständige E-Mail-Adressen verwenden, wie:
    "Long Name" <[email protected]>
  • Abgesehen von sendmails Option -f ist der gesamte Text, der Anführungszeichen, Fluchtsymbole und dergleichen benötigt, im "hier-Dokument" vergraben, was plötzlich viel weniger lästig ist.
  • Lesen Sie die man-Seite auf den sendmail "-" Optionen, die hier verwendet werden.

Machen Sie sich etwas mehr Gedanken und Sie können Anhänge, verschiedene Nachrichtencodierungen, verschiedene E-Mail-Formate, mehrteilige Nachrichten und mehr senden. Recherchieren Sie dazu und achten Sie auf die Anzahl der Bindestriche, die in verschiedenen Teilen der Nachricht benötigt werden.

%Vor%     
Gilbert 01.09.2012 10:45
quelle
1

Sie können mailx verwenden und setzen Sie Ihre Anführungszeichen immer um Variablen

%Vor%     
ghostdog74 23.11.2009 10:58
quelle
0

mailx wird in vielen Umgebungen nicht angezeigt. aber Sie können die gleiche Funktionalität mit Mail / sendmail

haben %Vor%     
Balualways 27.12.2010 13:27
quelle

Tags und Links