Jak mogę wysłać załącznik e-mailem z wiersza polecenia

26

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 [email protected] -s "Here's my file"
conorgriffin
źródło
1
Domyślnym klientem poczty użytkownika Ubuntu mail(aka mailx) 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.
msw 10.10

Odpowiedzi:

18

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" -- [email protected]

z wyjątkiem tego, że nigdzie nie pójdzie, ponieważ potrzebny jest również Agent przesyłania poczty. Popularne to:

  • czcigodny sendmail
  • postfiks
  • exim4
  • qmail
  • nullmailer

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.

msw
źródło
Świetne pytanie, dzięki. Poprosiłeś mnie o uruchomienie poczty na moim urządzeniu. Użyłem nullmailer MTA do ślepego przekazywania do mojego ISP, a przykładowe muttpolecenie 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.
msw
msw, nie jestem do końca pewien, dlaczego twierdzisz, że exim4 jest jedyną obsługiwaną kanonicznie, postfix jest także główny i to, co jest włączone, jeśli wybierzesz wybór zadania serwera pocztowego z instalacji Ubuntu-server. Wierzę, że exim4 jest domyślnym MTA debiana, a w przeszłości preferencje dotyczące pakowania mogły powodować, że jest on domyślnie pobierany, ale od jakiegoś czasu postfiks jest zdecydowanie preferowanym MTA w Ubuntu.
Steve Beattie,
Aha, i pamiętaj również, że jeśli korzystałeś z bsd mail / mailx jako (nieświadomego MIME) MUA, nadal potrzebujesz jakiegoś MTA, aby faktycznie wysłać pocztę. Ale i tak jest lepiej dla ciebie. :-)
Steve Beattie
11

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, uuencodepoleceń.

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" [email protected] < /home/masoud/YOURFILE.txt 

ale nie możesz wysłać tego samego pliku jako załącznika, jak poniżej:

mail -s "hello" [email protected] -a /home/masoud/YOURFILE.txt

lub:

mail -s "hello" -a /home/masoud/YOURFILE.txt [email protected]

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 [email protected]

Co ciekawe, różnica polega na istnieniu polecenia „echo”.

Aktualizacja: 201808

Wygląda na to, że -aopcja została teraz zmieniona na wielkie litery -A dla załącznika. -aWydaje się być na zmianę nagłówka według doc

Masoud
źródło
Doskonały! Dzięki. Próbowałem wysłać .zshrckomuś mój plik i chociaż mailczę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 [email protected]... oczywiście wciąż musiałem wpisać treść wiadomości i nacisnąć ctrl+dostatni pusty wiersz.
Karl Wilbur
Użycie mail [email protected] -a ~/.zshrc„działało” w tym sensie, że wysłało wiadomość, ale nie wysłało pliku. Gdybym spróbował mail [email protected] -a ~/.zshrc -s 'zshrc', byłoby oczywiste, że parametry po adresie odbiorcy były ignorowane.
Karl Wilbur
@Masoud lnk jest zepsuty ... chciałem go zaktualizować, ale lepiej wiesz, jaką dokumentację dostarczyłeś, więc ci to pozwolę
Philippe Gachoud
6

Odkryłem, że polecenie i parametry zostały ostatnio zmienione.

Jeśli chcesz wysłać załączniki za pomocą tego polecenia:

mail -s "your subject" [email protected] -A /your/attachment/absolute/path < /home/you/message.txt

attachmentPowinna być opcja -AKAPITAŁOWA A.

Alex
źródło
3

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 [email protected]tematem „S”, treścią „B” i załącznikiem /some/absolute/file.txtjest to polecenie

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',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 -fdo rozwiązania ścieżek względnych:

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',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' [email protected] '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.

Volker Siegel
źródło
2

heirloom-mailxPakiet w debian udostępnia mailxpolecenie łatwego wysyłania załączników MIME. następujące prace dla mnie;

 mailx -a attachment.zip -s subject [email protected]
Furkan Mustafa
źródło
1
To był brakujący element, którego potrzebowałem; maili mailxdołączone RH-alikes ma -adla plików załączników, ale jedno zawarte w Debian-alikes nie.
DopeGhoti
0

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" -- [email protected]
Anandu M Das
źródło