Können Anhänge über die Befehlszeile per E-Mail versendet werden?
Wenn möglich, möchte ich etwas so Einfaches wie:
mail -a myfile.txt -t me@example.com -s "Here's my file"
Können Anhänge über die Befehlszeile per E-Mail versendet werden?
Wenn möglich, möchte ich etwas so Einfaches wie:
mail -a myfile.txt -t me@example.com -s "Here's my file"
Antworten:
Von allen E-Mail-Benutzeragenten im Ubuntu-Repository scheint mutt die Befehlszeilen-MUA zu sein, die mit Langzeitunterstützung gesegnet ist.
Laut Handbuch können Sie genau Folgendes tun:
mutt -a myfile.txt -s "Here's my file" -- me@example.com
außer es wird nirgendwo hingehen, da man auch einen Mail Transfer Agent benötigt. Beliebte sind:
und die einzigen, die Canonical zu unterstützen scheint, sind postfix (danke für die Korrektur Steve) und exim4 .
Man könnte auch sagen, dass xdg-email auch eine richtige Ubuntu-MUA ist, aber es ist ein Bare-Bones-Frontend, das nur Ihre bevorzugte MUA in Ihrem Namen ausführt .
Wenn Sie Ratschläge dazu wünschen, welcher MTA für Ihre Verwendung geeignet sein könnte, öffnen Sie hier möglicherweise eine andere Frage.
mutt
hat wie angekündigt funktioniert. Übrigens hat nullmailer ein gefälschtes sendmail-Frontend, sodass die meisten Programme, die mit sendmail kommunizieren möchten, ohne großen Aufwand von mir an einen echten MTA weitergeleitet werden.
Ich hatte auch große Probleme mit dem Versenden von Anhangsdateien. Wenn ich eine E-Mail ohne Anhang gesendet habe, war sie erfolgreich, aber ohne Anhang. Dieses Problem wurde existent mit sendemail
, mutt
, mail
, mailx
,uuencode
Befehle.
Zum Glück wurde es witzig gelöst. Ich benutze Google Mail zum Senden von E-Mails. Sie können Ihr Google Mail-Konto so konfigurieren, dass E-Mails über Befehle im Terminal gesendet werden, wie unter http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html angegeben .
Sie können eine Text-E-Mail senden, indem Sie Folgendes verwenden:
mail -s "hello" RECEIVE@mail.com < /home/masoud/YOURFILE.txt
Sie können jedoch nicht dieselbe Datei als Anhang wie folgt senden:
mail -s "hello" RECEIVE@mail.com -a /home/masoud/YOURFILE.txt
oder:
mail -s "hello" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com
Schließlich habe ich verstanden, dass nur dieses Format einen Anhang senden kann:
echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com
Komischerweise besteht der Unterschied in der Existenz des "Echo" -Befehls.
Scheint, dass die -a
Option mit Großbuchstaben -A
für den Anhang jetzt geändert wurde . Das -a
scheint zum Ändern des Headers laut doc
.zshrc
Datei an jemanden zu senden , und obwohl ich häufig mail
schnelle Nachrichten versende, funktionierte der Versuch, einen Anhang zu senden, nicht. Ich brauchte nur eine Bestätigung, dass es möglich war, zu erkennen, dass die Reihenfolge der Argumente sehr wichtig ist. Das hat bei mir geklappt: mail -s "zshrc" -a ~/.zshrc username@example.com
... natürlich musste ich noch den Nachrichtentext eingeben und in ctrl+d
die letzte leere Zeile tippen .
mail username@example.com -a ~/.zshrc
"funktionierte" dahingehend, dass die Nachricht gesendet wurde, die Datei jedoch nicht gesendet wurde. Wenn ich es versucht mail username@example.com -a ~/.zshrc -s 'zshrc'
hätte, wäre es offensichtlich gewesen, dass die Parameter nach der Empfängeradresse ignoriert wurden.
Möglicherweise möchten Sie eine Datei aus der Shell senden , ansonsten verwenden Sie Thunderbird .
Versuchen Sie es in diesem Fall thunderbird -remote ...
nützlich - vorausgesetzt, Thunderbird läuft normalerweise:
Der Befehl öffnet ein Mail-Erstellungsfenster einer laufenden Thunderbird-Instanz.
Die "Von" -Adresse ist Ihre in Thunderbird konfigurierte Standardadresse .
Auch die vorhandenen Kontoeinstellungen verwendet, es ist keine separate Einrichtung erforderlich.
Für eine E-Mail you@example.com
mit Betreff "S", Text "B" und einem Anhang /some/absolute/file.txt
lautet der Befehl
thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='/some/absolute/file.txt')"
Es gibt zwei Probleme:
Die angehängte Datei muss durch einen absoluten Pfad angegeben werden , was in der Praxis mühsam ist. Dies kann durch Auflösen readlink -f
relativer Pfade erfolgen:
thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='$(readlink -f file.txt)')"
Außerdem ist der Befehl zu lang. Verwenden Sie ein Shell-Skript oder eine Shell-Funktion mit vier Argumenten:
thunderbird-compose () {
thunderbird -remote "xfeDoCommand(composeMessage,subject='$1',to='$2',body='$3',attachment='$(readlink -f $4)')"
}
Mit dieser Funktion wird der Befehl lesbar:
thunderbird-compose 'Some Subject' test@example.com 'Body of message' file1
öffnet ein thunderbird "Write" -Fenster mit dem Anhang und ausgefülltem From, To, Subject und Body-Text. Dieser kann vor dem Senden bearbeitet werden .
heirloom-mailx
package in debian bietet einen mailx
Befehl zum einfachen Versenden von MIME-Anhängen. folgendes arbeitet für mich;
mailx -a attachment.zip -s subject rctp@domain.to
mail
und mailx
enthalten mit RH-Doppelgängern hat -a
für Dateianhänge, aber das in Debian- a -likes enthalten nicht.
Ich möchte eine weitere Antwort hinzufügen, die zum Hinzufügen von Nachrichtentext zusammen mit dem Anhang verwendet wird. Prost!!
echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com
mail
(akamailx
) ist MIME-ignorant. Daher können Anhänge nicht auf eine Weise verarbeitet werden, die nicht 1980er-Jahre alt ist. Das ist eine gute Frage, ich suche die kanonische kanonische MUA; da kommt noch mehr.