it-swarm.com.de

Senden von Dateien mit sendmail

Ich habe ein Shell-Skript, das die sendmail-Funktion verwendet, um E-Mails zu senden. Der Code lautet wie folgt

mailalert(){
sendmail -F Sender-Name -it <<END_MESSAGE
To: [email protected]
Subject: Subject

Message
END_MESSAGE
}

Es wird ausgeführt, wenn ich diese Funktion aufrufe. Jetzt habe ich eine Textdatei, die ich mit sendmail als Anhang oder als Nachricht in der E-Mail versenden möchte. Wie kann ich das machen? Ich habe viele Tricks ausprobiert, aber nichts scheint zu funktionieren. Bitte helfen Sie.

5
Tarun

Ziemlich seltsam, aber ich habe einen anderen Ansatz gewählt, als bei der Verwendung von uuencode die Ausführung begann, der Cursor jedoch bei begin 644 /path/to/file steckte. Ich habe cat verwendet, um meine Datei im Nachrichtentext zu senden.

file=/path/to/file
mailalert(){
sendmail -F Sender-Name -it <<END_MESSAGE
To: [email protected]
Subject: Subject

$(cat $file)
END_MESSAGE
}

Der obige Code funktionierte einwandfrei, aber als ich die Nachricht in meinem Webbrowser sah, war es in Ordnung. Aber als ich es in Thunderbird sah, wurde es nicht richtig angezeigt. Es war wie eine Art verschlüsselt.

Ich halte diese Frage offen, bis ich nicht die richtige Lösung gefunden habe.

1
Tarun

Geben Sie uuencode /path/filename.txt | sendmail -s "subject" [email protected] in Ihr Terminal ein, um E-Mails zu senden.

  • Ersetzen Sie "Pfad" durch den tatsächlichen Verzeichnispfad, in dem sich die anzuhängende Datei befindet.
  • Ersetzen Sie "filename.ext" durch den tatsächlichen Dateinamen und die Erweiterung.
  • Ersetzen Sie "Betreff" durch die Betreffzeile, die in der E-Mail enthalten sein soll.
  • Ersetzen Sie "user @ domain" durch die E-Mail-Adresse des Empfängers.

dies ist der eigentliche Vorgang zum Senden von E-Mails mit Anhang.

fügen Sie uuencode /path/filename.txt vor dem Befehl sendmail in Ihr Skript ein. Ich meine, ändern Sie es als

mailalert(){
uuencode /path/filename.txt
sendmail -F Sender-Name -it <<END_MESSAGE
To: [email protected]
Subject: Subject

Message
END_MESSAGE
}

hoffe das kann dir helfen.

3
rɑːdʒɑ

Ich habe das folgende Skript erstellt, um eine CSV-Datei anzuhängen. Die Datei wird generiert, aber der Name der Kopfzeile/-spalte der CSV wird falsch abgeschnitten. Außerdem wird mit jeder E-Mail eine weitere Datei angehängt, nämlich 'ATT0001.txt'. Hast du etwas falsch gemacht, was du hier herausfinden konntest?

SKRIPT

(
echo "From:"$1;
echo "To:"$2;
echo "Subject:"$3;
echo "MIME-Version: 1.0";
echo "Content-Type:multipart/mixed; boundary=\"B835649000072104Jul07\"";

echo "--B835649000072104Jul07";
echo "Content-Type: text/html; charset=\"UTF-8\"";
echo "Content-Transfer-Encoding: 7bit";
echo "Content-Disposition: inline";
echo "";
echo "$4";

echo "--B835649000072104Jul07";
echo "Content-Type: text/csv";
echo "Content-Transfer-Encoding: base64";
echo "Content-Disposition: attachment; filename=\"$5\"";
base64 "$5"

echo "--B835649000072104Jul07";
) | sendmail -t
1
Amol Aranke

Nach dem Durchsuchen zahlreicher nutzloser MAN Seiten und dem Googeln bin ich schließlich zu dieser Lösung gekommen:
Zu sendende Datei: test.csv

Unter Ubuntu haben Sie Uuencode (AIX), der im Paket sharutils enthalten ist, das Sie möglicherweise installieren müssen (das Äquivalent unter RedHat ist mutt).

uuencode test.csv test.csv | mail -v -s "Subject test" -r [email protected] [email protected]

Das größte Problem bestand darin, Sendmail und Anhang zu kombinieren und gleichzeitig den Betreff festzulegen. Auch unter AIX habe ich nicht die Option -a attachment, wie in der LINUX-Manpage vorgeschlagen.

Sie können auch mailx anstelle von mail mit genau den gleichen Parametern verwenden.

0
Petefram

Wenn Sie E-Mails auch von der Befehlszeile aus senden, verwenden Sie am besten ein Programm, das für diesen Zweck entwickelt wurde, anstatt sendmail direkt aufzurufen. Ein guter Allround-Befehlszeilen-E-Mail-Client ist mutt; Insbesondere verfügt es über ein Befehlszeilen-Flag zum Anhängen von Dateien, wodurch die umständliche Verwendung von uuencode vermieden wird:

echo Test | mutt -s Test -a image.jpg -- [email protected]

Informationen zur Verwendung finden Sie wie gewohnt unter man mutt.

0
fkraiem