Codul KornShell (ksh) pentru a trimite atașamente cu mailx și uuencode?

Trebuie să atașez un dosar cu mailx, dar în acest moment nu am succes.

Iată codul meu:

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

Orice feedback ar fi foarte apreciat.


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

0

2 răspunsuri

Trebuie să concatenați atât textul mesajului dvs., cât și atașamentul uuencoded:

$ 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"

Există modalități diferite de a furniza textul mesajului, acesta este doar un exemplu care este aproape de întrebarea inițială. Dacă mesajul trebuie reutilizat, este logic să îl stocați într-un fișier și să utilizați acest fișier.

0
adăugat
Multumesc pentru raspuns! Deci, mesajul msg.txt este creat de EOF apoi reutilizat în ultima linie?
adăugat autor Nano Taboada, sursa
Greșeala mea! am distanțat pisica> msg.txt << EOF
adăugat autor Nano Taboada, sursa

Ei bine, aici sunt primele câteva probleme pe care le aveți.

  1. Se pare că presupuneți că un client de mail se va ocupa de atasamentul codificat uuencoded fără anteturi. Asta nu se va întâmpla.

  2. Folosiți abuzul de redirecționare I/O: ieșirea uuencode și documentul aici sunt ambele alimentate la mailx,
  3. Utilizați codul uuen: dacă este dată o cale, este doar un nume pentru a da fișierul decodat, nu un nume de fișier de intrare. Oferirea fișierului de două ori va atribui același nume fișierului decodificat ca cel citit. Parametrii -m flag-base64 codifică. Dar acest lucru încă nu va oferi anteturi de atașament pentru mailx.

Esti mult mai bine sa obtii o copie a lui mpack, care va face ceea ce vrei.

Dacă trebuie să faceți acest lucru, puteți face ceva de genul:

cat <

Există o mulțime de alte posibilități ... dar acesta are încă documentul de aici ca în exemplul dvs. și a fost ușor de pe partea de sus a capului meu, și nu există nici un dosar temp implicate.

0
adăugat
Am urmatoarea eroare: uuencode: optiunea ilegala - m Utilizare: uuencode [infile] remotefile
adăugat autor Nano Taboada, sursa
Aveți și o versiune mai veche a codului uuencode, înainte de a furniza codare base64 ... ați putea obține în continuare mpack și compilați-l pentru a fi utilizat local sub contul dvs. ... asta probabil aș face.
adăugat autor Thomas Kammeyer, sursa