Я создал сценарий, который запускается каждую ночь на моем сервере Linux, который использует mysqldump
для резервного копирования каждой из моих баз данных MySQL файлы .sql и упаковывает их вместе в сжатый файл .tar. Следующим шагом, который я хочу выполнить, является отправка этого tar-файла по электронной почте на удаленный почтовый сервер для безопасного хранения. Я смог отправить сырой сценарий в теле письма по электронной почте, скопировав файл резервной копии mailx
примерно так:
$ cat mysqldbbackup.sql | mailx backup@email.com
cat
повторяет текст файла резервной копии, который передается в mailx
программу с адресом электронной почты получателя, переданным в качестве аргумента.
В то время как это выполняет то, что мне нужно, я думаю, что это может быть на один шаг лучше, есть ли способ, используя сценарии оболочки или иным образом, отправить сжатый файл .tar в исходящее сообщение электронной почты в виде вложения ? Это избавило бы от необходимости иметь дело с очень длинными сообщениями электронной почты, которые содержат данные заголовка и часто имеют проблемы с переносом слов и т. Д.
источник
mysqldump
а затем присоединение вывода к электронной почте (сmutt
). Возможно, у меня даже был шаг, который сжимал вывод в zip / tar.gz ...Ответы:
Никто из дураков не работал на меня. Он думал, что адрес электронной почты был частью Attachemnt. Должен сделать:
источник
Или провалившийся дурак:
источник
text/html
на любой тип MIME, подходящий для вашего вложения. (Для этого конкретного примера, я думаюapplication/gzip
.)В зависимости от вашей версии linux это может называться mail. Процитировать @David выше:
или также:
источник
-a, --append=HEADER: VALUE append given header to the message being sent
mutt
команду, а неmail
. Также, как отмечали другие, теперь Mutt, похоже, требует--
аргумент перед адресом. И я вижу, что @exhuma и я на самом деле согласны с тем, что делает-a
опцияmail
- я запутался там на минуту;)-a, --append=HEADER: VALUE append given header to the message being sent
-A, --attach=FILE attach FILE
Глядя на
man mailx
, программа mailx не имеет опции для прикрепления файла. Вы можете использовать другую программу, такую как Mutt.Параметры командной строки для Mutt могут быть показаны с
mutt -h
.источник
--
.Я использую SendEmail, который был создан для этого сценария. Он упакован для Ubuntu, поэтому я предполагаю, что он доступен
http://caspian.dotconf.net/menu/Software/SendEmail/
источник
sendemail
и так иsendEmail
внутри/usr/bin/
.SendEmail
sendemail -f mandatory@email.com-t to@some.one -m "Here are your files!" -a file1.jpg file2.zip
Я использую mpack.
К сожалению, mpack не распознает '-' как псевдоним для stdin. Но следующая работа и может быть легко заключена в псевдоним (shell) или скрипт:
источник
mpack -s subject /dev/stdin loser@example.com <(stdout_generating_program)
источник
mailx
не должным образом стандартизирован. Любой ответ, который рекомендует это, должен указать это предостережение. Существует как минимум три несовместимых варианта общего пользования.Однажды я написал эту функцию для ksh в Solaris (использует Perl для кодирования base64):
источник
base64
для кодирования можно использовать команду вместо perlВы можете использовать Mutt, чтобы отправить письмо с приложением
источник
-a
опцию после получателя:mutt -s "Backup" backup@email.com -a mysqldbbackup.sql < message.txt
или использовать--
опцию перед получателем, как показано в ответе rynop.Отправьте текстовое электронное письмо с одним вложенным текстом в формате mailx:
Ниже та же команда, что и выше, без перевода строки
Убедитесь, что у вас есть файл,
/home/el/attachfile.txt
определенный с этим содержанием:Если у вас нет uuencode, прочитайте это: /unix/16277/how-do-i-get-uuencode-to-work
В Linux отправьте основную электронную почту в формате HTML с вложением PDF с помощью sendmail:
Убедитесь, что у вас установлен ksh:
yum info ksh
Убедитесь, что у вас установлен и настроен sendmail.
Убедитесь, что у вас установлен и доступен код uuencode: /unix/16277/how-do-i-get-uuencode-to-work
Создайте новый файл с именем
test.sh
и поместите его в свой домашний каталог:/home/el
Введите следующий код в
test.sh
:Измените переменные экспорта в верхней части,
test.sh
чтобы они отражали ваш адрес и имена файлов.Загрузите тестовый pdf документ и поместите его в
/home/el
файл pdf-test.pdf.Создайте файл с именем /home/el/email_body.htm и вставьте в него следующую строку:
Убедитесь, что файл PDF имеет достаточные права доступа 755.
Запустить скрипт
./test.sh
Проверьте свою электронную почту, текст должен быть в формате HTML, а файл PDF автоматически интерпретируется как двоичный файл. Старайтесь не использовать эту функцию более, чем, скажем, 15 раз в день, даже если вы отправляете электронные письма себе, спам-фильтры в gmail могут занести в черный список домен, извергающий электронные письма, не давая вам возможности пропустить их. И вы обнаружите, что это больше не работает, или только пропускает вложение, либо электронное письмо вообще не приходит. Если вам нужно много тестировать по этому поводу, распределите их по дням, или вы будете помечены как спамер, и эта функция больше не будет работать.
источник
(echo 'Email Body'; uuencode filename filename) | mailx -s 'Subject' user@domain.com
uuencode
это не правильно вложение. Он просто встраивает читаемый компьютером блок текста в середину другого текста. Раньше он работал нормально, когда не было лучшего механизма, но это было более 20 лет назад.Есть несколько ответов здесь предлагая
mail
илиmailx
так это скорее фон , чтобы помочь вам интерпретировать их в контексте.Исторические заметки
Происхождение Unix
mail
восходит к туманам ранней истории Bell Labs Unix ™ (1969?), И мы, вероятно, не можем надеяться углубиться в его полную генеалогию здесь. Достаточно сказать, что есть много программ, которые наследуют код или переопределяют (или наследуют код от переопределения)mail
и что не существует единой базы кода, которая может быть однозначно идентифицирована как «the»mail
.Тем не менее, одним из претендентов на эту должность, безусловно, является «Почта Беркли», которая первоначально была названа
Mail
заглавной буквой М в 2BSD (1978); но в 3BSD (1979) он также заменил команду в нижнем регистреmail
, что привело к некоторой новой путанице. SVR3 (1986) включал производную, которая была названаmailx
.x
Предположительно добавил , чтобы сделать его уникальным и различны; но теперь это тоже было скопировано, переопределено и искалечено, так что нет единой отдельной версии, которая была бы окончательной.В свое время стандартом де-факто для отправки двоичных файлов по электронной почте был
uuencode
. Он все еще существует, но имеет множество проблем с юзабилити; если это вообще возможно, вы должны вместо этого отправлять вложения MIME, если только вы специально не пытаетесь общаться с концом 1980-х годов.MIME был представлен в начале 1990-х годов для решения ряда проблем с электронной почтой, включая поддержку различных типов контента, кроме простого текста, в одном наборе символов, который действительно подходит только для подмножества английского языка (и, как нам говорят, на гавайском языке) ). Это привело к поддержке многокомпонентных сообщений, интернационализации, богатых типов контента и т. Д. И быстро завоевало популярность в течение 1990-х годов.
( Семейные заметки
mail
/mailx
исторические заметки были наиболее полезны при составлении этого, и, безусловно, их стоит прочитать, если вы любите подобные вещи.)Текущие предложения
Начиная с 2018 года в Debian есть три пакета, в которые входит команда
mail
илиmailx
. (Вы можете искатьProvides: mailx
.)(Я не выделяю Debian в качестве рекомендации; это то, чем я пользуюсь, поэтому я с ним знаком; и он дает возможность однозначно различать различные альтернативы, ссылаясь на их соответствующие имена пакетов. Это, очевидно, также дистрибутив какая Ubuntu получает эти пакеты.)
bsd-mailx
является относительно простым,mailx
который не поддерживает отправку вложений MIME. См. Его страницу руководства и обратите внимание, что это то, что вы ожидаете найти в системе * BSD, включая MacOS, по умолчанию.heirloom-mailx
в настоящее время называетсяs-nail
и делает поддержку отправки вложений MIME с-a
. См. Его страницу руководства и в более общем плане проект семейной реликвииmailutils
ака GNU Mailutils включаетmail
/mailx
обертку совместимости , которая делает поддержку отправки MIME вложений с-A
С этими проблемами, если вам нужен код , чтобы быть портативным и может зависеть от степени сложного пакета, простой способ переносимым отправлять вложения MIME является использование
mutt
.источник
Другая альтернатива - Swaks (Швейцарский армейский нож для SMTP).
источник
у метапочты есть инструмент мета отправка
источник
я использовал
и это хорошо сработало для меня ....
источник
Я обычно использую только команду mail на RHEL. Я пробовал mailx, и это довольно эффективно.
источник
кратчайший путь для меня
так что для вашего примера это будет
хорошая часть в том, что я могу вспомнить его с помощью Ctrl + r, чтобы отправить другой файл ...
источник
С исходной машины
На пункте назначения машины. Сохранить полученное почтовое тело как db.sql.gz.b64 ; затем..
источник
Чтобы добавить свои 2 цента, я бы написал свой собственный PHP Script:
http://php.net/manual/en/function.mail.php
Есть много способов сделать вложение в примерах на этой странице.
источник
sh
еще более вездесущ. Есть дублирующие вопросы с ответами с хорошими примерами; вот мойmailx
действительно есть-a
опция для вложений.источник
mailx
делают. Я считаю, что есть две реализации. С одной стороны-a
, для вложений, с другой - для заголовков.Не способ отправки электронной почты, но вы можете использовать для этого онлайн-сервер Git (например, Bitbucket или подобный сервис).
Таким образом, вы можете использовать
git push
команды, и все версии будут храниться в сжатом и упорядоченном виде.источник
Вот как я делаю с одним большим файлом журнала в CentOS:
источник
WHOAMI
иHOSTNAME
дважды?Если файл текстовый, вы можете отправить его проще всего в теле как:
источник
используя команду mailx
используя sendmail
источник
uuencode
MIME.eval
и загадочные задиры вокруг всего устройства здесь совершенно не нужны.Mailutils делает это кусок пирога
-A file
прикрепляет файл-M
включает MIME, так что вы можете иметь вложение и текстовое тело.Если еще не установлен, запустите
источник
В зависимости от параметров вашей почтовой команды (проверьте это с помощью
man mail
) и версии вы можете сделатьecho yourBody|mail -s yoursubject -A /your/attachment/file john@doe.com
источник
-A
параметр относится кmailutils
версии GNU, о которойmail
говорилось в моем ответе, а также к @ rumpel'sЕсли Mutt не работает или не установлен, попробуйте это
источник