Der einfachste Weg, eine Datei per Befehlszeile in * nix per E-Mail zu versenden?

10

Was ist der einfachste - und vorzugsweise portabelste - Befehl, mit dem ich eine einzelne Datei als Anhang einer * nix-Shell per E-Mail versenden kann?

Yuval A.
quelle

Antworten:

11

Angenommen, es ist ein binärer Anhang:

uuencode [Dateiname] [Dateiname] | mail -s [Betreff] [Empfängeradresse]

Sie müssen sich nicht um die UUencoding kümmern, wenn es sich nur um eine Textdatei handelt, z.

mail -s [Betreff] [Empfängeradresse] <[Dateiname]

Die meisten * NIXs haben Mail und Uuencode, daher sollte dies praktisch überall funktionieren.

RainyRat
quelle
Wie wäre es, wenn ich die Textdatei als Anhang und nicht im Nachrichtentext haben möchte?
Yuval A
Es kommt darauf an - ich glaube nicht, dass einfache GNU-E-Mails dies können, daher müssen Sie einen tatsächlichen E-Mail-Client verwenden. Kiefer, Köter oder ähnliches. Welche davon Ihnen zur Verfügung stehen, hängt davon ab, welche auf Ihren Systemen installiert sind. Mit Mutt funktioniert Gavins Antwort (unten) einwandfrei.
RainyRat
Kiefer ist gut! Kann ich es über die Befehlszeile mit der Text-GUI verwenden?
Yuval A
11

Mit Mutt können Sie:

mutt -z -a <file> -s <subject> -- [email protected]

Oder wenn Sie keinen Körper eingeben möchten:

mutt -z -a <file> -s <subject> -- [email protected] < /dev/null

Gavin McTaggart
quelle
Köter ist auf meinen Systemen sowieso nicht verfügbar
Yuval A
Ich denke, Sie werden feststellen, dass dies ein Fehler zwischen dem, was einfach und dem, was tragbar ist, sein wird. mailx ist portabel, aber nicht unbedingt einfach. Wie RainyRat erwähnt, müssen Sie eine vollständige MUA verwenden und diese über die Befehlszeile ausführen.
Gavin McTaggart
2
Ich musste --vor der E-Mail-Adresse eine hinzufügen , damit diese Befehle funktionieren.
Autumnsault
Bindestriche sind in der Tat erforderlich, um die E-Mail-Adresse von den Dateinamen "- [email protected]" zu trennen. @DoctorMohawk ist korrekt. Der Versuch, sie oben zum Hauptteil der Antwort hinzuzufügen.
Jeff Clayton
2

" sendEmail ist ein leichtgewichtiger SMTP-E-Mail-Client mit Befehlszeile. Wenn Sie E-Mails über eine Befehlszeile senden müssen, ist dieses kostenlose Programm perfekt: einfach zu verwenden und reich an Funktionen. Es wurde für die Verwendung in Bash-Skripten und Batch-Dateien entwickelt , Perl-Programme und Websites, ist jedoch sehr anpassungsfähig und wird wahrscheinlich Ihren Anforderungen entsprechen. SendEmail ist in Perl geschrieben und einzigartig, da es KEINE MODULE erfordert. Es verfügt über intuitive und flexible Befehlszeilenoptionen, was es sehr einfach macht zu lernen und zu verwenden. [Unterstützte Plattformen: Linux, BSD, OS X, Windows 98, Windows NT, Windows 2000 und Windows XP] "

Ich habe es schon einmal benutzt und es hat mir sehr gut gefallen. Sie können Dateien mit der Option -a anhängen.

Clinton Blackmore
quelle
+1 - Dies war perfekt für das, was ich brauche, da es einfach ist und immer noch aktiv gewartet wird! Wenn Sie auf einem Debian-System sind, können Sie einfach aptitude install sendemail. Beachten Sie, dass der Befehl wie sendEmailbei einem Großbuchstaben 'E' installiert wird .
Topher Fangio
Tatsächlich enthält der Tarball ein Perl-Skript und einige Dokumente. Sie können es einfach herunterladen, extrahieren und ausführen (vorausgesetzt, Ihr System verfügt über Perl). Ich bin froh, dass es dir gefällt.
Clinton Blackmore
1

Ich kann keinen Kommentar hinzufügen, aber ..

  • Die Antworten darauf werden sehr davon abhängen, welche Ableitung von mailxIhnen , falls vorhanden, verfügbar ist.
  • Obwohl die Datei von der empfangenden MUA problemlos angezeigt werden sollte, wird beim Piping von uuencodetechnisch keine E-Mail mit einem Anhang erstellt. Sehen Sie sich die Quelle der E-Mail an, die Sie erhalten, um herauszufinden, warum.
Dan Carley
quelle
+1 für die Wahrheit. Ich wusste nicht einmal, dass es eine Version von mailx gibt, die Anhänge senden kann (meine sicherlich nicht). Sie haben auch Recht mit der manuellen Uude-Codierung, die für die Uuencode -> Mail-Pipeline erforderlich ist.
Gavin McTaggart
1

Wenn Sie absolute Portabilität wünschen, können Sie über Port 25 Telnet auf Ihren Mailserver senden und SMTP-Befehle direkt ausgeben. Sie sind nicht zu schwer und es sollte sehr skriptfähig sein.

Maximus Minimus
quelle
3
Sie können auch Ihren eigenen SMTP-Server schreiben.
Hark
1

Google hat diese Seite schnell aufgerufen , auf der verschiedene Möglichkeiten zum Anhängen von Dateien mit verschiedenen Anwendungen beschrieben werden. Einige der am weitesten verbreiteten -

  • uuenc8de , um einen Inline- "Anhang" zu erstellen .

  • Metamail -f file-to-attach -m mime-type

  • mpack -c mime-type file-to-attach

  • Köter -a file-to-attach

  • Ulme -A file-to-attach

Darüber hinaus enthält es Links zu einigen Shell-Skripten und einem Perl-Skript zum Erstellen und Senden der Nachricht, die Ihnen wahrscheinlich besser gefallen wird.

horchen
quelle
1
echo "Email body text" | mail -s "Subject of email" -a file.to.attach.txt [email protected]
Neobyte
quelle
mail: illegale Option - a
Yuval A
1
Beachten Sie, dass dies eine Mailx-Funktion ist. Stellen Sie sicher, dass ein bestimmtes Paket installiert ist
niXar
0

Vor einigen Jahren habe ich ein Shell-Skript geschrieben, das genau das tat. Es wurde binmail.sh genannt. Es wurde ein Base64-Encoder verwendet (viele Quellcodes können mit Google gefunden werden ) und Anhänge gemäß RFC1521 erstellt .

Mouviciel
quelle