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 <example@nowhere.com>
To: recipient@madeup.com
CC: someoneelse@place.com
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


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" -- recipient@domain.com

Mit mailBefehl:

mail -a /opt/emailfile.eml -s "Email File" user@example.com < /dev/null

-a wird für Anhänge verwendet.

Sie können verwenden SendEmail:

sendemail -t to@example.com -m "Here is the file." -a attachmentFile

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 <sender@email.co.za>
To: recipient01@email.co.za
CC: recipient02@email.co.za
Disposition-Notification-To: recipient01@email.co.za
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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.