Jak mogę wysłać wiadomość e-mail z plikiem xls załącznika za pomocą skryptu powłoki jako mimetype application / xls bez powodowania, że ​​otrzymany plik stanie się nieczytelny

0
#!/bin/bash

ATTACH1=file.xls<br>
SUBJECT="subj"<br>
FROM=me@domain.com<br>
TO=you@domain.com<br>
CC=them@domain.com<br>
MIME="Application/vnd.ms-excel" <br>
FILE=$ATTACH1<br>
boundary="---my-unlikely-text-for-mime-boundary---$$--" <br>
(cat <<!<br>
From: $FROM<br>
To: $TO<br>
Subject: $SUBJECT<br>
Date: $(date +"%a, %b %e %Y %T %z")<br>
Mime-Version: 1.0<br>
Content-Type: multipart/mixed; boundary="$boundary"<br>


This email has attached the file<br>
--$boundary<br>
Content-Type: $MIME;name="$FILE"<br>
Content-Disposition: attachment;filename="$FILE"<br>

!<br>
uuencode ${ATTACH1} ${ATTACH1}<br>
) | sendmail -v ${TO}<br>

Cześć,

Powyższy kod może wysłać plik xls za pomocą skryptu powłoki. Problem w tym, że otrzymany plik nie może być otwarty. Ponadto rozmiar pliku xls staje się mniejszy. Przykład: oryginalny rozmiar załącznika xls wynosi 17 kb przed wysłaniem, ale otrzymany plik ma rozmiar 378b po wysłaniu.

Co mogę zrobić, aby odebrane xls stały się czytelne, gdy zostały otwarte przez odbiornik? Co jest źle lub czego brakuje w powyższym skrypcie? Proszę pomóż!!!!

A tak przy okazji ... NIE MOGĘ UŻYWAĆ MUTT

RaymonN
źródło
Gdzie umieszczasz zawartość pliku?
CVn
masz na myśli powyższy kod? Umieszczam go jako plik script1.sh, a następnie wykonuję go ./script1.sh
RaymonN
Nie, chodzi mi o to, w jaki sposób dane, które są przesyłane potokowo, sendmailzawierają zawartość pliku, który chcesz dołączyć do wiadomości e-mail?
CVn
Zobacz zaktualizowany skrypt. Teraz wysyła ten sam rozmiar pliku, ale teraz zawiera początek 644 PRB0045758_EDI_UPLOAD_14-01-2016.xls M / #] X; 6P @ = F5R <VEO; CTB, 2XP (C \ ^ "CQS < SI7; W) K8F] O: R! X; 6QN <SIS <STB M = 7) NG-C: & 5M87, M; 6EC <F] S; V9T + 6-O; 3IO9F9I8V4Z <W! R96% D <VAE970B M / @ H \ <W, Z4W1Y; & 5S / @ H \ <W, Z4W1Y; & 4 @ <W, Z240] (D] R86-L941A = & 4B / @ H \ M <W, Z3G5M8F5R1F] R; 6% T ('-S.D9O <FUA = # TB9 & 0O; 6TO> 7EY> 5P @: & @ Z; 6TZ M <W, B + SX * / "] S <SI3 =„ EL93X * / "] S <SI3 =' EL97, ^ "CQS <SI7; W) K <VAE970 @
RaymonN
duplikat stackoverflow.com/q/17359/7552
glenn jackman

Odpowiedzi:

0

Musisz określić kodowanie transferu treści dla części MIME z załącznikiem. Nie wiem, czy uuencode jest standardowy. Base64 jest jednak.

Musisz także wysłać znacznik granicy zamknięcia.

Twoje przekierowanie na kota jest nieprawidłowe.

(cat << !
From: $FROM
To: $TO
Subject: $SUBJECT
Date: $(date +"%a, %b %e %Y %T %z")
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="$boundary"

This email has attached the file

--$boundary
Content-Type: text/plain; charset=ISO-8859-1

Please see the attachmed file.

--$boundary
Content-Transfer-Encoding: base64
Content-Type: $MIME;name="$ATTACH1"
Content-Disposition: attachment;filename="$ATTACH1"

$(base64 "$ATTACH1")

--$boundary--
!
) | sendmail -v "$TO"
Glenn Jackman
źródło
base64: nie znaleziono polecenia :(
RaymonN
Spróbuj Content-Transfer-Encoding: uuencodeużyć uuencode na pliku, tak jak robiłeś.
glenn jackman
nadal nie działa ... załączony plik po otrzymaniu nie może być otwarty
RaymonN