Frage

Ich brauche eine Datei mit mailx zu befestigen, aber im Moment habe ich nicht mit Erfolg bin.

Hier ist mein Code:

subject="Something happened"
to="somebody@somewhere.com"
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

Jedes Feedback würde sehr geschätzt.


Aktualisieren Ich habe die Anlage var hinzugefügt, um zu vermeiden, jedes Mal den Weg zu verwenden.

War es hilfreich?

Lösung

Sie haben sowohl den Text Ihrer Nachricht und die uuencoded Befestigung an concat:

$ subject="Something happened"
$ to="somebody@somewhere.com"
$ body="Attachment Test"
$ attachment=/path/to/somefile.csv
$
$ cat >msg.txt <<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
$ ( cat msg.txt ; uuencode $attachment somefile.csv) | mailx -s "$subject" "$to"

Es gibt verschiedene Möglichkeiten, um den Nachrichtentext zu schaffen, dies ist nur ein Beispiel, die auf Ihre ursprüngliche Frage nahe. Wenn die Meldung erneut verwendet werden soll es Sinn macht es einfach zu speichern, in einer Datei und diese Datei verwenden.

Andere Tipps

Nun, hier sind die ersten paar Probleme, die Sie haben.

  1. Sie scheinen zu der Annahme, dass ein Mail-Client uuencoded Befestigung ohne Header zu handhaben wird. Das wird nicht passieren.

  2. Sie mißbrauchen I / O-Umleitung. Uuencode die Ausgabe und das hier-Dokument zugeführt werden, die beide mailx, was nicht passieren kann,

  3. Sie mißbrauchen Uuencode: wenn ein Pfad angegeben wird, es ist nur ein Name, der entschlüsselten Datei zu geben, nicht einen Eingabedateinamen. Geben Sie die zweimal Datei wird den gleichen Namen auf die entschlüsselte Datei wie zuweisen, die gelesen wurde. Die Option -m Kräfte base64 kodieren. Aber das ist noch nicht zu Befestigung Header für mailx liefern.

Sie sind viel besser, eine Kopie mpack bekommen, die das tun, was Sie wollen.

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

cat <<EOF | ( cat -; uuencode -m /path/to/somefile.csv /path/to/somefile.csv; ) | mailx -s "$subject" "$to" 
place your message from the here block in your example here
EOF

Es gibt viele andere Möglichkeiten ... aber diese hat immer noch das hier Dokument wie in Ihrem Beispiel und war aus der Spitze von meinem Kopf einfach, und es gibt keine temporäre Datei beteiligt ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top