Czy możliwe jest wysyłanie załączników e-mailem z wiersza poleceń?
Jeśli to możliwe, chciałbym coś tak prostego jak:
mail -a myfile.txt -t me@example.com -s "Here's my file"
Czy możliwe jest wysyłanie załączników e-mailem z wiersza poleceń?
Jeśli to możliwe, chciałbym coś tak prostego jak:
mail -a myfile.txt -t me@example.com -s "Here's my file"
Odpowiedzi:
Ze wszystkich agentów pocztowych w repozytorium Ubuntu wygląda na to, że mutt to MUA z linii poleceń, który jest obdarzony długofalową obsługą.
Zgodnie z instrukcją możesz zrobić dokładnie coś takiego:
mutt -a myfile.txt -s "Here's my file" -- me@example.com
z wyjątkiem tego, że nigdzie nie pójdzie, ponieważ potrzebny jest również Agent przesyłania poczty. Popularne to:
i jedyne, które Canonical wydaje się wspierać, to postfiks (dzięki za korektę Steve) i exim4 .
Można również powiedzieć, że xdg-email jest także właściwym Ubuntu MUA, ale jest to interfejs bez systemu operacyjnego, który wykonuje tylko preferowane MUA w twoim imieniu.
Jeśli potrzebujesz porady na temat tego, który MTA może być odpowiedni do twojego użytku, być może otwórz inne pytanie tutaj.
mutt
polecenie działało zgodnie z reklamą. Nawiasem mówiąc, nullmailer ma fałszywy interfejs sendmaila, więc większość programów, które oczekują rozmowy z sendmailem, zostaje przeniesiona do prawdziwej MTA bez żadnego wysiłku ode mnie.
Miałem też poważne problemy z wysyłaniem plików załączników. Kiedy wysłałem wiadomość e-mail bez załącznika, udało się, ale nie było załącznika. Problem ten istnieje z sendemail
, mutt
, mail
, mailx
, uuencode
poleceń.
Na szczęście został rozwiązany zabawnie. Używam Gmaila do wysyłania wiadomości e-mail. Możesz skonfigurować swojego Gmaila do wysyłania wiadomości e-mail za pomocą poleceń w terminalu, jak zadeklarowano na stronie http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html .
Możesz wysłać wiadomość tekstową za pomocą:
mail -s "hello" RECEIVE@mail.com < /home/masoud/YOURFILE.txt
ale nie możesz wysłać tego samego pliku jako załącznika, jak poniżej:
mail -s "hello" RECEIVE@mail.com -a /home/masoud/YOURFILE.txt
lub:
mail -s "hello" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com
Wreszcie zrozumiałem, że tylko ten format może wysłać załącznik:
echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com
Co ciekawe, różnica polega na istnieniu polecenia „echo”.
Wygląda na to, że -a
opcja została teraz zmieniona na wielkie litery -A
dla załącznika. -a
Wydaje się być na zmianę nagłówka według doc
.zshrc
komuś mój plik i chociaż mail
często używam do wysyłania szybkich wiadomości, próba wysłania załącznika nie działała. Potrzebowałem tylko potwierdzenia, że można zrozumieć, że kolejność argumentów jest bardzo ważna. To działało dla mnie: mail -s "zshrc" -a ~/.zshrc username@example.com
... oczywiście wciąż musiałem wpisać treść wiadomości i nacisnąć ctrl+d
ostatni pusty wiersz.
mail username@example.com -a ~/.zshrc
„działało” w tym sensie, że wysłało wiadomość, ale nie wysłało pliku. Gdybym spróbował mail username@example.com -a ~/.zshrc -s 'zshrc'
, byłoby oczywiste, że parametry po adresie odbiorcy były ignorowane.
Możesz wysłać plik z powłoki , ale w przeciwnym razie użyj Thunderbirda .
W takim przypadku try thunderbird -remote ...
jest przydatne - zakładając, że thunderbird zwykle działa:
Polecenie otwiera okno tworzenia wiadomości e-mail działającej instancji Thunderbird.
Adres „Od” to domyślny adres skonfigurowany w programie Thunderbird.
Ponadto używane są istniejące ustawienia konta , nie jest wymagana osobna konfiguracja.
W przypadku wiadomości adresowanej pod you@example.com
tematem „S”, treścią „B” i załącznikiem /some/absolute/file.txt
jest to polecenie
thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='/some/absolute/file.txt')"
Istnieją dwa problemy:
Załączony plik musi być podany bezwzględną ścieżką , co jest uciążliwe w praktyce. Można to wymieniać, używając readlink -f
do rozwiązania ścieżek względnych:
thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='$(readlink -f file.txt)')"
Ponadto polecenie jest zbyt długie. Użyj skryptu powłoki lub funkcji powłoki z czterema argumentami:
thunderbird-compose () {
thunderbird -remote "xfeDoCommand(composeMessage,subject='$1',to='$2',body='$3',attachment='$(readlink -f $4)')"
}
Dzięki tej funkcji polecenie staje się czytelne:
thunderbird-compose 'Some Subject' test@example.com 'Body of message' file1
otworzy okno „Napisz” thunderbirda z załącznikiem oraz wypełnione pola Od, Do, Temat i treść. Można go edytować przed wysłaniem.
heirloom-mailx
Pakiet w debian udostępnia mailx
polecenie łatwego wysyłania załączników MIME. następujące prace dla mnie;
mailx -a attachment.zip -s subject rctp@domain.to
mail
i mailx
dołączone RH-alikes ma -a
dla plików załączników, ale jedno zawarte w Debian-alikes nie.
Chcę dodać kolejną odpowiedź, która służy do dodania tekstu podstawowego wraz z załącznikiem. Twoje zdrowie!!
echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com
mail
(akamailx
) jest MIME ignorant, dlatego nie może obsługiwać załączników w żaden inny sposób niż z lat 80. To dobre pytanie, szukam kanonicznego MUA kanonicznego; więcej w przyszłości.