Sendmail-Anhang

12

Ich habe mich gefragt, ob es möglich ist, einen Anhang in sendmail aufzunehmen. Ich generiere die folgenden emailfile.eml-Dateien mit dem folgenden Layout

From: Company Name <[email protected]>
To: [email protected]
CC: [email protected]
Subject: Generated Output

Mime-Version: 1.0

This will be the body copy even though it's terrible

Ich sende diese E-Mails mit

# /usr/sbin/sendmail -t < emailfile.eml

Dieser Teil ist eine Arbeitsdatei, aber ich möchte dieser E-Mail einen Anhang hinzufügen, und ich habe nicht herausgefunden, wie das geht

TheLovelySausage
quelle
Verwenden Sie uuencodeoder mutt.
Serenat
Ich hatte gehofft, etwas mehr wie Content-Disposition: Anhang zu verwenden, aber ich kann es nicht zum
Laufen bringen
Möchten Sie nur Text UND Anhang ODER Anhang? ["nur Anhang" Fall ist trivial]
AnFi
Ich möchte eine Textkopie und den Anhang senden, vorzugsweise mit sendmail und der eml-Datei mit Content-Disposition
TheLovelySausage
In diesem Fall ist es am einfachsten, den E-Mail-Client zu verwenden, z. B. mutt
AnFi

Antworten:

13

Mit können muttSie einfach verwenden:

echo "This is the message body" | mutt -a "/path/to/file_to_attach" -s "subject of message" -- [email protected]

Mit mailBefehl:

mail -a /opt/emailfile.eml -s "Email File" [email protected] < /dev/null

-a wird für Anhänge verwendet.

Sie können verwenden SendEmail:

sendemail -t [email protected] -m "Here is the file." -a attachmentFile
serenesat
quelle
1
SendEmailist für Ubuntu, also nicht sicher, ob es für CentOS funktioniert oder nicht.
Serenat
1
Ja, ich habe kein sendemailCentOS an meinem Arbeitsplatz, wir haben es nur sendmail.
Alexej Magura
auf meinem Ubuntu-System war die mailOption -Anicht-a
jdex
7

Veröffentlichen Sie die Lösung, die für mich funktioniert hat, falls sie jemand anderem helfen kann. Tut mir leid, dass es so spät ist.

Der zuverlässigste Weg, dies zu tun, bestand darin, den Anhang als base64 in die eml-Datei selbst aufzunehmen. Unten ist ein Beispiel für den eml-Inhalt.

Hinweis 01: Die base64 für die Datei stammt aus der Ausführung des Befehls base64 unter Linux unter Verwendung des Anhangs als Argument (sollte mit jedem base64-Tool funktionieren).

Anmerkung 02: Die für die Grenze verwendete Zeichenfolge ist nur Unsinn, wenn Datum und zufällige Großbuchstaben verwendet werden

Dateiname: emlfile.eml

From: Sender <[email protected]>
To: [email protected]
CC: [email protected]
Disposition-Notification-To: [email protected]
Subject: Generic Subject
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="19032019ABCDE"

--19032019ABCDE
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Generic Body Copy

--19032019ABCDE
Content-Type: application;
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="MyPdfAttachment.pdf"

*base64 string goes here (no asterix)*

--19032019ABCDE--

Dann kann die Datei filename.eml mit dem Befehl gesendet werden und enthält den Anhang

# /usr/sbin/sendmail -t < filename.eml
TheLovelySausage
quelle
2
Tolle Antwort und völlig richtig. Bei mehreren Anhängen können Sie den Abschnitt von der vorletzten Zeile bis zum vorletzten Trennzeichen (einschließlich) so oft wie nötig in der EML-Datei wiederholen.
mttpgn
1
Vielen Dank! <3
TheLovelySausage