KornShell (ksh) Code zum Senden von Anhängen mit mailx und uuencode?

Ich muss eine Datei mit mailx anhängen, aber im Moment habe ich keinen Erfolg.

Hier ist mein Code:

subject="Something happened"
to="[email protected]"
body="Attachment Test"
attachment=/path/to/somefile.csv

uuencode $attachment | mailx -s "$subject" "$to" << EOF

The message is ready to be sent with the following file or link attachments:

somefile.csv

Note: To protect against computer viruses, e-mail programs may prevent
sending or receiving certain types of file attachments.  Check your
e-mail security settings to determine how attachments are handled.

EOF

Jede Rückmeldung wird sehr geschätzt.


Update I have added the attachment var to avoid having to use the path every time.

0
hinzugefügt bearbeitet
Ansichten: 2

2 Antworten

Sie müssen sowohl den Text Ihrer Nachricht als auch den UUENCODIERTEN Anhang zusammenfassen:

$ subject="Something happened"
$ to="[email protected]"
$ body="Attachment Test"
$ attachment=/path/to/somefile.csv
$
$ cat >msg.txt < The message is ready to be sent with the following file or link attachments:
>
> somefile.csv
>
> Note: To protect against computer viruses, e-mail programs may prevent
> sending or receiving certain types of file attachments.  Check your
> e-mail security settings to determine how attachments are handled.
>
> EOF
$ ( cat msg.txt ; uuencode $attachment somefile.csv) | mailx -s "$subject" "$to"

Es gibt verschiedene Möglichkeiten, den Nachrichtentext bereitzustellen. Dies ist nur ein Beispiel, das Ihrer ursprünglichen Frage ähnelt. Wenn die Nachricht wiederverwendet werden soll, ist es sinnvoll, sie nur in einer Datei zu speichern und diese Datei zu verwenden.

0
hinzugefügt
Danke für die Antwort! Also wird die msg.txt vom EOF erzeugt und dann in der letzten Zeile wiederverwendet?
hinzugefügt der Autor Nano Taboada, Quelle
Es wirft den folgenden Fehler auf: cat: msg.txt kann nicht geöffnet werden
hinzugefügt der Autor Nano Taboada, Quelle
Mein Fehler! Ich habe die Katze> msg.txt << EOF
hinzugefügt der Autor Nano Taboada, Quelle

Nun, hier sind die ersten Probleme, die du hast.

  1. Sie scheinen davon auszugehen, dass ein E-Mail-Client eine UU-codierte Anlage ohne Header verarbeiten wird. Das wird nicht passieren.

  2. Sie missbrauchen die I/O-Umleitung: Die Ausgabe von uuencode und das here-Dokument werden beide an mailx übergeben, was nicht passieren kann.

  3. Sie missbrauchen UUENCODE: Wenn ein Pfad angegeben wird, ist es nur ein Name, der die dekodierte Datei angibt, nicht den Namen einer Eingabedatei. Wenn Sie die Datei zweimal angeben, wird der entschlüsselten Datei derselbe Name zugewiesen wie dem, der gelesen wurde. Das Flag -m erzwingt die base64-Codierung. Aber das wird immer noch keine Anhangskopfzeilen für mailx bereitstellen.

Es ist viel besser, eine Kopie von mpack zu bekommen, die das macht, was Sie wollen.

Wenn Sie es tun müssen, könnten Sie so etwas tun:

cat <

Es gibt viele andere Möglichkeiten ... aber dieses hier hat noch das hier vorliegende Dokument wie in Ihrem Beispiel und war einfach von der Spitze meines Kopfes, und es ist keine temporäre Datei beteiligt.

0
hinzugefügt
Vielen Dank! Ja, ich habe gesehen, dass es mutt ist, das einfache Anhänge machen kann, aber da ich nicht in dieser Box root bin, müsste ich mich mit jedem Mailx-Hack beschäftigen.
hinzugefügt der Autor Nano Taboada, Quelle
Ich habe den folgenden Fehler: Uuencode: illegale Option - m Verwendung: Uuencode [Infile] Remotefile
hinzugefügt der Autor Nano Taboada, Quelle
Du hast und ältere Version von Uuencode, bevor es base64-Kodierung zur Verfügung gestellt hat ... du könntest immer noch mpack bekommen und es einfach kompilieren, um es lokal unter deinem Account zu benutzen ... das würde ich wahrscheinlich machen.
hinzugefügt der Autor Thomas Kammeyer, Quelle