Wie kann ich E-Mails mit Anhang xls-Datei mit Shell-Skript als application/xls-Mimetype senden, ohne dass die empfangene Datei unlesbar wird

#!/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>

Hallo,

Der obige Code kann XLS-Datei mit Shell-Skript senden. Das Problem ist jedoch, dass die empfangene Datei nicht geöffnet werden kann. Außerdem wird die Dateigröße des xls kleiner. Beispiel: Die ursprüngliche Größe des xls-Anhangs beträgt vor dem Senden 17 KB, die empfangene Datei wird jedoch nach dem Senden 378b groß..

Was kann ich tun, damit das empfangene xls lesbar wird, wenn es vom Empfänger geöffnet wird? Was ist falsch oder fehlt im obigen Skript? Bitte Hilfe!!!!

Und übrigens.. ICH KANN MUTT

Author: scai, 2016-01-15

2 answers

Sie müssen die Content-Transfer-Encoding für den MIME-Teil mit dem Anhang angeben. Ich weiß nicht, ob uuencode ein Standard ist. Base64-ist aber.

Sie müssen auch die schließende Grenzmarkierung senden.

Deine Umleitung in cat ist falsch.

(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"
 0
Author: glenn jackman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-01-15 11:41:59

Anstatt ein eigenes Programm zum Senden von E-Mails zu erstellen, verwenden Sie einfach eines der vielen bereits vorhandenen. Was du suchst ist ein (mail user agent) (MUA). Es stehen viele zur Auswahl, um E-Mails über die Befehlszeile zu senden. Zum Beispiel mit Mutt:

mutt [email protected] -s "My example subject" -a attachment.xlsx < mailbody.txt

Dies sendet eine Mail an [email protected], lesen der Mail-Text aus der Datei "mailbody.txt", und mit dem Anhang Anhang.xlsx. Mutt wird alle nitty-gritty für vou tun, wie die Codierung der Mail wählen Sie entsprechend und wählen Sie den richtigen MIME-Typ für den Anhang.

Natürlich kannst du das alles selbst schreiben, aber du musst vielleicht ein paar Monate investieren...

 0
Author: sleske,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-02-28 21:15:26