Comment puis-je envoyer un e-mail avec un fichier xls en pièce jointe à l'aide d'un script shell comme type MIME application / xls sans rendre le fichier reçu illisible?


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>

Salut,

Le code ci-dessus peut envoyer un fichier xls à l'aide d'un script shell. Mais le problème est que, le fichier reçu ne peut pas être ouvert. En outre, la taille du fichier xls devient plus petite. Exemple: la taille de la pièce jointe xls d'origine est de 17 Ko avant l'envoi, mais la taille du fichier reçu est de 378 Ko après son envoi.

Que puis-je faire pour que les xls reçus deviennent lisibles lorsqu'ils sont ouverts par le destinataire? Qu'est-ce qui ne va pas ou manque dans le script ci-dessus? S'il vous plaît aider !!!!

Et au fait .. JE NE PEUX PAS UTILISER MUTT


Où mettez-vous le contenu du fichier?
a CVn

tu veux dire le code ci-dessus? Je le mets en tant que fichier script1.sh puis l'exécute avec ./script1.sh
RaymonN

Non, je veux dire comment les données qui sont canalisées dans sendmail contient le contenu du fichier que vous souhaitez joindre à l'e-mail?
a CVn

Veuillez consulter le script mis à jour. Il envoie maintenant la même taille de fichier, mais il contient maintenant le début. 644 PRB0045758_EDI_UPLOAD_14-01-2016.xls M / #] X; 6P @ = F5R & lt; VEO; CTB, 2XP (C \ ^ "CQS & lt; SI7; W) K8F] O: R; X; 6QN RaymonN

Réponses:


0

Vous devez spécifier le Content-Transfer-Encoding pour la partie MIME avec la pièce jointe. Je ne sais pas si uuencode est un standard. Base64 est bien.

Vous devez également envoyer le marqueur de limite de fermeture.

Votre redirection dans chat est incorrecte.

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

base64: commande non trouvée :(
RaymonN

Essayer Content-Transfer-Encoding: uuencode et utilisez uuencode sur le fichier comme vous le faisiez.
glenn jackman

ne fonctionne toujours pas..le fichier joint lorsqu'il est reçu ne peut pas être ouvert
RaymonN
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.