Как я могу отправить вложение в приложении из командной строки

26

Можно ли отправлять вложения по электронной почте из командной строки?

Если возможно, я бы хотел что-то простое, как:

mail -a myfile.txt -t me@example.com -s "Here's my file"
conorgriffin
источник
1
Почтовый пользовательский агент командной строки ubuntu по умолчанию mail(aka mailx) - MIME невежественный, поэтому не может обрабатывать вложения любым способом, не относящимся к 1980-м годам. Это хороший вопрос, я ищу каноническую каноническую MUA; еще не все.
2010 года

Ответы:

18

Похоже, что из всех почтовых агентов в репозитории Ubuntu mutt - это MUA командной строки, наделенный долгосрочной поддержкой.

Согласно инструкции , вы можете сделать что-то в точности как:

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

за исключением того, что он никуда не денется, так как также нужен агент пересылки почты Популярные из них:

  • почтенный sendmail
  • постфикс
  • exim4
  • Qmail
  • nullmailer

и единственное, что Canonical, похоже, поддерживает, это postfix (спасибо за исправление Steve) и exim4 .

Можно также сказать, что xdg-email также является надлежащим MUA Ubuntu, но это простой интерфейс, который выполняет предпочитаемый MUA только от вашего имени.

Если вам нужен совет, какой MTA может подойти для вашего использования, возможно, откройте еще один вопрос здесь.

MSW
источник
Отличный вопрос, спасибо. Вы подсказали мне, чтобы почта работала на моем ящике. Я использовал nullmailer MTA для слепой ретрансляции на моего провайдера, и пример muttкоманды работал так, как было объявлено. Между прочим, у nullmailer есть фальшивый интерфейс sendmail, так что большинство программ, ожидающих взаимодействия с sendmail, перетасовываются в настоящий MTA без каких-либо усилий с моей стороны.
2010 года
msw, я не совсем уверен, почему вы утверждаете, что exim4 является единственной канонической поддержкой, postfix также находится в main и является тем, что включается, если вы выбираете выбор задачи Mail Server из установки ubuntu-server. Я полагаю, что exim4 является MTA Debian по умолчанию, и в прошлом настройки пакетов, возможно, вызывали его включение по умолчанию, но какое-то время postfix определенно является предпочтительным MTA в Ubuntu.
Стив Битти
О, а также обратите внимание, что если вы выбрали bsd mail / mailx в качестве вашего (не поддерживающего MIME) MUA, вам все равно понадобится MTA, чтобы отправлять почту. Но, тем не менее, болтать лучше для тебя. :-)
Стив Битти
11

У меня тоже были проблемы с отправкой файлов вложений. Когда я отправил электронное письмо без вложения, оно прошло успешно, но не было вложения. Эта проблема была существует с sendemail, mutt, mail, mailx, uuencodeкомандой.

К счастью, это было решено до смешного. Я использую Gmail для отправки электронной почты. Вы можете настроить свой 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

Как ни странно, разница в существовании команды "echo".

Обновление: 201808

Кажется, что -aопция была изменена с Uppercase -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КАПИТАЛЬНАЯ A.

Alex
источник
3

Вы можете отправить файл из оболочки , но в противном случае используйте Thunderbird .

В этом случае try thunderbird -remote ...полезен - предполагается, что обычно запускается thunderbird:

Команда открывает окно создания почты работающего экземпляра Thunderbird.
Адрес «От» - это ваш адрес по умолчанию, настроенный в 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

откроет окно Thunderbird «Write» с вложенными файлами , заполненными From, To, Subject и основным текстом. Его можно отредактировать перед отправкой.

Volker Siegel
источник
2

heirloom-mailxПакет в Debian предоставляет mailxкоманду для простой отправки MIME-вложений. следующие работы для меня;

 mailx -a attachment.zip -s subject rctp@domain.to
Фуркан Мустафа
источник
1
Это была недостающая часть, в которой я нуждался; mailи mailxвключен RH-двойники имеют -aдля вложенных файлов, но один включенные в Debian-двойниках нет.
DopeGhoti
0

Я хочу добавить еще один ответ, который используется для добавления основного текста вместе с приложением. Ура !!

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com
Ананду М Дас
источник