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>
[email protected]<br>
[email protected]<br>
[email protected]<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

RaymonN
la source
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
RaymonN
duplicata de stackoverflow.com/q/17359/7552
glenn jackman

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"
glenn jackman
la source
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