/usr/bin/mail interpretiert neue Zeilen nicht

/usr/bin/mail interpretiert neue Zeilen nicht

Ich habe ein seltsames Problem, wenn ich eine Katze per Pipe an die E-Mail weiterleite.

Ich habe eine einfache Textdatei, die aus einem Skript kompiliert wurde und einen Bericht darüber enthält, welche Ordner im Skript kopiert wurden. Diesen Bericht möchte ich dann per E-Mail an die Systemadministratoren senden.

Das Skript generiert den Bericht einwandfrei. Wenn ich es ausführe

cat /tmp/report.txt

Ich erhalte eine schön formatierte Ausgabe mit allen Zeilenumbrüchen, die ich erwarte.

Copy report. Started on Mon Sep 28 13:37:57 BST 2015

Run in progress?: Yes

3 directories were copied.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)
Copy completed on 2015.09.28 at 13:37:57
Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:37:59
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14)
Copy completed on 2015.09.28 at 13:37:59
Copy info:
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k
0inputs+355896outputs (0major+152minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:38:01
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18)
Copy completed on 2015.09.28 at 13:38:01
Copy info:
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k
0inputs+355896outputs (0major+151minor)pagefaults 0swaps

Aus irgendeinem Grund, wenn ich dies jetzt an Mail weiterleite

cat /tmp/report.txt | mail -s "Copy Report" [email protected]

oder

mail -s "Copy Report" [email protected] < /tmp/report.txt

Dies ist die E-Mail, die ich bekomme.

Copy report. Started on Mon Sep 28 13:37:57 BST 2015

Run in progress?: Yes

3 directories were copied.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Copy completed on 2015.09.28 at 13:37:57 Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:37:59
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14) Copy completed on 2015.09.28 at 13:37:59 Copy info:
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k
0inputs+355896outputs (0major+152minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:38:01
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18) Copy completed on 2015.09.28 at 13:38:01 Copy info:
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k
0inputs+355896outputs (0major+151minor)pagefaults 0swaps

Was ist los? Manche Zeilenumbrüche sind da, manche nicht! Ich habe versucht, die Datei sowohl in vi als auch in nano zu bearbeiten und sicherzustellen, dass die Zeilenumbrüche tatsächlich da waren. Ich habe sie auch gelöscht und neu erstellt und die E-Mail-Ausgabe bleibt dieselbe.

Verwenden von /usr/bin/mail

Weitere Informationen:

Ich habe das Folgende von Hand in eine Textdatei eingegeben und dieselbe Weiterleitung an die E-Mail durchgeführt. Am Anfang jeder Zeile habe ich das Wort „Kopieren“ eingefügt.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)
Copy completed on 2015.09.28 at 13:37:57
Copy info:
Copy 0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
Copy 0inputs+355896outputs (0major+150minor)pagefaults 0swaps

Das habe ich in der E-Mail erhalten:

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Copy completed on 2015.09.28 at 13:37:57 Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps

Ich habe dann alle Wörter mit dem Zusatz „Kopieren“ entfernt. Das hier ist, was ich in der E-Mail erhalten habe.

Started on 2015.09.29 at 09:46:49
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Completed on 2015.09.29 at 09:46:49
Info:
0.00user 0.46system 0:01.98elapsed 23%CPU (0avgtext+0avgdata 2552maxresident)k
0inputs+355896outputs (0major+149minor)pagefaults 0swaps

Dachte, es könnte etwas mit dem Wort „Kopie“ zu tun haben, aber ich habe immer noch eine Zeile ohne Zeilenumbruch!

Dies ist die Ausgabe voncat -vet /tmp/report.txt

Copy report. Started on Mon Sep 28 13:37:57 BST 2015$
$
Run in progress?: Yes$
$
$
$
3 directories were copied.$
$
$
Copy started on 2015.09.28 at 13:37:57$
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)$
Copy completed on 2015.09.28 at 13:37:57$
Copy info:$
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k$
0inputs+355896outputs (0major+150minor)pagefaults 0swaps$
$
$
Copy started on 2015.09.28 at 13:37:59$
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14)$
Copy completed on 2015.09.28 at 13:37:59$
Copy info:$
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k$
0inputs+355896outputs (0major+152minor)pagefaults 0swaps$
$
$
Copy started on 2015.09.28 at 13:38:01$
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18)$
Copy completed on 2015.09.28 at 13:38:01$
Copy info:$
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k$
0inputs+355896outputs (0major+151minor)pagefaults 0swaps$

Antwort1

Sie leiden wahrscheinlich unter dem "format=flowed"Besonderheitvor langer Zeit eingeführt, sieherfc2646.

Sie werden wahrscheinlich feststellen, dass einige Zeilen ein Leerzeichen am Ende haben. Einige E-Mail-Programme interpretieren dies als „Verbinde diese Zeile mit der nächsten und führe dann den Textumbruch für die Zeilen erneut durch, damit er auf die Bildschirmbreite passt“.

Normalerweise sollte dies nur durchgeführt werden, wenn Ihre E-Mail über die Content-TypeHeader-Option verfügt format=flowed, heutzutage ist dies jedoch aufgrund der Nicht-Unix-Benutzer zur Standardeinstellung geworden.

Verwenden Sie es cat -vetfür Ihre Daten, um zu prüfen, ob nachstehende Leerzeichen vorhanden sind. Verwenden Sie es, sed 's/ \+$//'um sie zu entfernen.


Ich habe in Ihren Daten weder Leerzeichen am Ende noch Steuerzeichen (oder Wagenrückläufe) gesehen. Es gibt also keine wirkliche Entschuldigung dafür, dass Ihr Mailer diese manipuliert hat.

Ein letzter Versuch: Gehen Sie wie von Andrzej A. Filip vorgeschlagen maildirekt zu sendmail. Dadurch können Sie einen expliziten Content-Type-Header hinzufügen. Beispiel:

(echo 'Subject: Copy Report'
 echo 'Content-Type: text/plain; charset=us-ascii; format=fixed'
 echo
 cat /tmp/report.txt
) |  sendmail [email protected]

Das Letzte echoist, die Header vor den Daten zu beenden. Sendmail befindet sich möglicherweise nicht in Ihrem PATH. Suchen Sie in /sbin und /usr/sbin usw.

verwandte Informationen