Як я можу надіслати електронну пошту вкладення з командного рядка


26

Чи можливо надсилати вкладені файли з командного рядка?

Якщо можливо, я хотів би щось просте, як:

mail -a myfile.txt -t me@example.com -s "Here's my file"

1
Користувач-агент поштового зв’язку командного рядка ubuntu mail(він же mailx) є MIME неосвіченим, тому не може обробляти вкладені файли жодним чином, що не дорівнює 1980ish. Це гарне запитання, я шукаю канонічного канонічного MUA; ще попереду.
msw

Відповіді:


18

З усіх агентів поштових користувачів у сховищі Ubuntu, схоже, що mutt - це командний рядок MUA, який підтримується Довгостроковою підтримкою.

Відповідно до посібника , ви можете зробити щось саме так:

mutt -a myfile.txt -s "Here's my file" -- me@example.com

за винятком того, що він нікуди не піде, оскільки одному також потрібен агент пересилання пошти. Популярними є:

  • поважний sendmail
  • постфікс
  • exim4
  • qmail
  • nullmailer

і єдині, які, схоже, підтримують Canonical, - це постфікс (спасибі за виправлення Стіва) та exim4 .

Можна також сказати, що xdg-електронна пошта також є належним Ubuntu MUA, але це передній кінець з голими кістками, який виконує лише ваш бажаний MUA від вашого імені.

Якщо ви хочете порадити, який MTA може бути придатним для використання, можливо, відкрийте тут інше питання.


Чудове запитання, дякую. Ви запропонували мені отримати пошту, яка працює на моїй коробці. Я використовував nutamailer MTA, щоб сліпо передати свій Інтернет-провайдер, і команда example muttпрацювала як рекламується. Між іншим, у nullmailer є фальшивий фронтальний sendmail, так що більшість програм, які очікують на розмову з sendmail, пересуваються на справжній MTA з нульовими зусиллями від мене.
msw

msw, я не зовсім впевнений, чому ви стверджуєте, що exim4 є єдиною канонічною підтримкою, постфікс також є головним, і це те, що ввімкнено, якщо ви вибрали вибір завдання Mail Server з установки ubuntu-сервера. Я вважаю, що exim4 - це MTA за замовчуванням для debian, і в минулому переваги упаковки, можливо, спричиняли його використання за замовчуванням, але на деякий час постфікс, безумовно, є кращим MTA в Ubuntu.
Стів Бітті

О, а також зауважте, що якби ви їхали з bsd mail / mailx як свій (невідомий) MUA, вам все одно знадобиться MTA якогось типу, щоб насправді надіслати пошту. Але баранина краще для вас все одно. :-)
Стів Бітті

11

У мене були погані проблеми з надсиланням файлів вкладень. Коли я надіслав електронний лист без вкладення, він був успішним, але не був із вкладенням. Ця проблема була існує з sendemail, mutt, mail, mailx, uuencodeкомандою.

На щастя, це було вирішено весело. Я використовую Gmail для надсилання електронної пошти. Ви можете налаштувати свою електронну пошту для надсилання електронної пошти за допомогою команд у терміналі, як оголошено за адресою http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html .

Ви можете надіслати текстове повідомлення електронною поштою за допомогою:

mail -s "hello" RECEIVE@mail.com < /home/masoud/YOURFILE.txt 

але ви не можете надіслати такий самий файл, як вкладення, як показано нижче:

mail -s "hello" RECEIVE@mail.com -a /home/masoud/YOURFILE.txt

або:

mail -s "hello" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com

Нарешті, я зрозумів, що лише цей формат може надсилати вкладення:

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com

Дивно, що різниця полягає в існуванні команди "ехо".

Оновлення: 201808

Здається, що зараз -aпараметр змінено з верхнього регістру -A для вкладення. -a, Здається, для зміни заголовка згідно з документом


Відмінно! Спасибі. Я намагався надіслати свій .zshrcфайл комусь, і хоча я mailбагато використовую для надсилання швидких повідомлень, спроба надіслати вкладення не працювала. Мені просто потрібно було підтвердження, що можна зрозуміти, що порядок аргументів дуже важливий. Це спрацювало для мене: mail -s "zshrc" -a ~/.zshrc username@example.com... звичайно, мені все ж довелося набрати тіло повідомлення та натиснути ctrl+dна останній порожній рядок.
Карл Вільбур

Використання mail username@example.com -a ~/.zshrc"працювало" в тому, що він надіслав повідомлення, але файл не надіслав. Якби я спробував, mail username@example.com -a ~/.zshrc -s 'zshrc'було б очевидно, що парами після адреси одержувача були ігноровані.
Карл Вільбур

@Masoud lnk зламаний ... хотів оновити його, але ви краще знаєте, яку документацію ви надали, щоб я передав вам це
Філіп Гачуд

6

Я виявив, що команда та параметри нещодавно були змінені.

Якщо ви хочете надіслати свої вкладення за допомогою цієї команди:

mail -s "your subject" you@gmail.com -A /your/attachment/absolute/path < /home/you/message.txt

Варіант attachmentповинен бути, -Aякий є CAPITAL A.


3

Ви можете надіслати файл з оболонки , але в іншому випадку використовувати Thunderbird .

У цьому випадку спробуйте thunderbird -remote ...корисно - якщо припустимо, що громовержець зазвичай працює:

Команда відкриває вікно складання пошти запущеного екземпляра громовідводу.
Адреса "Від" - це ваша за замовчуванням адреса, налаштована на thunderbird.
Також використовуються існуючі налаштування облікового запису , окрема настройка не потрібна.

Для пошти, адресованої you@example.comтемі "S", тілу "B" та вкладеному файлу /some/absolute/file.txt, команда є

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='/some/absolute/file.txt')"

Є дві проблеми:

Прикріпленому файлу потрібно надати абсолютний шлях , який стомлює на практиці. Це можна вирішити, використовуючи readlink -fдля вирішення відносних шляхів:

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='$(readlink -f file.txt)')"

Також команда - довго. Використовуйте скрипт оболонки або функцію оболонки з чотирма аргументами:

thunderbird-compose () {
    thunderbird -remote "xfeDoCommand(composeMessage,subject='$1',to='$2',body='$3',attachment='$(readlink -f $4)')"
}

Завдяки цій функції команда стає читабельною:

thunderbird-compose 'Some Subject' test@example.com 'Body of message' file1

відкриє вікно "Написати" громовідводу із вкладеним файлом , а також заповнені "Від", "Тема" та "Основний текст". Її можна редагувати перед надсиланням.


2

heirloom-mailxпакунок в debian забезпечує mailxкоманду легко надсилати вкладення mime. наступні роботи для мене;

 mailx -a attachment.zip -s subject rctp@domain.to

1
Це був той недолік, який мені потрібен; the mailі mailxвключений до RH-подібних -aфайлів має вкладення до файлів, але той, що входить в Debian-alikes, не робить.
DopeGhoti

0

Я хочу додати ще одну відповідь, яка використовується для додавання тексту тексту разом із додатком. Ура !!

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.