So senden Sie über die Befehlszeile in Linux einen E-Mail-Anhang, ohne die Datei physisch zu erstellen

So senden Sie über die Befehlszeile in Linux einen E-Mail-Anhang, ohne die Datei physisch zu erstellen

Ich versuche, eine E-Mail mit einem CSV-Anhang zu senden, es ist jedoch nicht möglich, die Datei lokal zu erstellen.

Gibt es eine Möglichkeit, den Inhalt (ich habe den Inhalt in einer Variablen im Speicher) so an sendmail/mail weiterzuleiten, dass die Daten als Anhang angezeigt werden?

Antwort1

Sie können mailx verwenden (Beispiel aushttps://access.redhat.com/solutions/104833) und Bash- <()Syntax:

echo "MESSAGE BODY" | mailx -s "SUBJECT" -a <(echo something | sed 's/thing/thong/g') [email protected]

Gleiches Beispiel mit Mutt:

echo "MESSAGE BODY" | mutt -s "SUBJECT" -a <(echo something | sed 's/thing/thong/g') -- [email protected]

Alles darin <()wird von Bash ausgeführt, es wird eine temporäre Datei dafür erstellt und diese als Parameter für den Befehl bereitgestellt.

Antwort2

In der Frage wird der Grund für das Nichterstellen einer Datei nicht genannt. Abhängig von diesem Grund stehen Ihnen möglicherweise alternative Lösungen zur Verfügung, mit denen Sie das zugrunde liegende Problem auf andere Weise lösen können, wenn der von Ihnen angefragte Ansatz nicht funktioniert:

  • Wenn Sie befürchten, dass die Datei vertrauliche Daten enthält, die Sie nicht dauerhaft speichern möchten, können Sie die Datei auf eine RAM-Disk schreiben. Achten Sie darauf, dass Ihr E-Mail-Programm die Datei nicht in ein temporäres Verzeichnis oder einen Entwurfsordner kopiert.

  • Wenn Sie befürchten, dass die Datei zu groß für Ihren permanenten Speicher ist, sollten Sie bedenken, dass der Empfänger wahrscheinlich auch beim Öffnen der Datei und eines zwischengeschalteten MTA Schwierigkeiten haben wird. Sie sollten anstelle der Mail-Protokolle ein anderes Protokoll in Betracht ziehen.

verwandte Informationen