- sending file using sendmail
- 5 Answers 5
- SCRIPT
- Отправка почты из командной строки Linux
- Подготовка
- Синтаксис
- Примеры использования командной строки для email-отправки
- 1. Отправка письма с вложением
- 2. Несколько получателей
- 3. Отправка с копией
- 4. Указать отправителя
- 5. Отправка через другой SMTP сервер
- Mutt
- Примеры использования Mutt
- Отправить электронную почту в Linux из командной строки
- Linux Отправка электронной почты из командной строки
- 1. Использование почтовой команды
- Тестирование почтовой команды
- 2. С помощью команды mailx
- Тестирование команды Mailx
- 3. Использование команды MUTT
- Тестирование команды Mutt
- 4. Использование команды mpack
- Тестирование команды mpack
- 5.Использование sendmail
- Тестирование команды sendmail
- Резюме
sending file using sendmail
It gets executed whenever I call this function. Now I have a text file which I want to send using sendmail as attachment or as message in the email it sends. How can I do that? I have tried alot of tricks but nothing seems to work. Please Help.
5 Answers 5
Type uuencode /path/filename.txt | sendmail -s «subject» user@domain in your terminal to send mail.
- Replace «path» with the actual directory path in which the file to attach is located.
- Replace «filename.ext» with the actual file name and extension.
- Replace «subject» with the subject line you want the email to have.
- Replace «user@domain» with the recipient’s email address.
this is the actual process to send mail with attachment.
add uuencode /path/filename.txt before sendmail command in your script. I mean modify it as
I tried the approach but when executing the script it gives the message begin 644 /path/filename.txt and the cursor keeps on blinking.
I have created below script to attach a CSV File. The File is getting generated, but its truncating the header row /column name of CSV incorrectly and also there is one more file thats getting attached with the email, namely ‘ATT0001.txt’ with every email. Anything wrong that you could found out here?
SCRIPT
( echo "From:"$1; echo "To:"$2; echo "Subject:"$3; echo "MIME-Version: 1.0"; echo "Content-Type:multipart/mixed; boundary=\"B835649000072104Jul07\""; echo "--B835649000072104Jul07"; echo "Content-Type: text/html; charset=\"UTF-8\""; echo "Content-Transfer-Encoding: 7bit"; echo "Content-Disposition: inline"; echo ""; echo "$4"; echo "--B835649000072104Jul07"; echo "Content-Type: text/csv"; echo "Content-Transfer-Encoding: base64"; echo "Content-Disposition: attachment; filename=\"$5\""; base64 "$5" echo "--B835649000072104Jul07"; ) | sendmail -t
Отправка почты из командной строки Linux
Обновлено: 05.05.2022 Опубликовано: 31.03.2017
Подготовка
Для начала устанавливаем утилиту для отправки почты. В противном случае мы увидим ошибку mail: command not found. В Debian / Ubuntu:
Синтаксис
* в данном примере будет отправлено письмо на электронный адрес master@dmosk.ru с темой Test title и телом письма — Test text. Если при отправке возникли проблемы, можно проверить логи следующей командой:
Примеры использования командной строки для email-отправки
1. Отправка письма с вложением
echo ‘Attachment’ | mail -s ‘Subject attachment message’ -a /var/log/maillog -a /var/log/maillog2 master@dmosk.ru
echo ‘Attachment’ | mail -s ‘Subject attachment message’ -A /var/log/maillog -A /var/log/maillog2 master@dmosk.ru
* где /var/log/maillog и /var/log/maillog2 — файлы, которые будут прикреплены к письму. Обратите внимание, что обе команды отличаются по регистру опции a и A — все зависит от версии и сборки Linux (в каких-то нужно использовать маленькую, в каких-то — большую). Также обратите внимание, что в примере для Ubuntu мы отправим 2 файла — для этого просто добавляем к команде еще одну опцию прикрепления файла.
2. Несколько получателей
* в данном примере мы отправил письмо на ящики master@dmosk.ru и shmaster@dmosk.ru.
3. Отправка с копией
4. Указать отправителя
5. Отправка через другой SMTP сервер
echo «Test text» | mail -s «Test title» -a «Smtp: smtp.mail.ru:25» -a «From: postmaster@dmosk.ru» -a «Return-path: postmaster@dmosk.ru» master@dmosk.ru
Однако, если сторонний почтовый сервер работает по шифрованному каналу и требует аутентификацию, необходимо ввести следующее:
echo «Test text» | mail -v -s «Test title» -S smtp=»smtp.dmosk.ru:587″ -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user=»master@dmosk.ru» -S smtp-auth-password=»password» -S ssl-verify=ignore -S nss-config-dir=/etc/pki/nssdb -S from=postmaster@dmosk.ru master@dmosk.ru
* где smtp.dmosk.ru — сервер smtp; 587 — порт для подключения к серверу отправки; smtp-use-starttls указывает на использование шифрования через TLS; smtp-auth=login задает аутентификацию с использованием логина и пароля; smtp-auth-user и smtp-auth-password — соответственно логин и пароль; ssl-verify=ignore отключает проверку подлинности сертификата безопасности; nss-config-dir указывает на каталог с базами nss; from задает поле FROM
Mutt
При возникновении проблем, можно воспользоваться программой mutt. Сначала поставим ее. а) если используем CentOS / Red Hat:
Примеры использования Mutt
echo «Mail From» | mutt -s «subject» -e ‘my_hdr From: Дмитрий
* данной командой mutt отправит письмо от postmaster@dmosk.ru. 3. Отправка через другой сервер. Для начала, открываем файл с конфигурацией Mutt:
* в данном примере мы отправим всю нашу почту через узел smtp.mail.ru, порт 25. Или при необходимости авторизации на почтовом сервере:
set smtp_url=»smtp://smtp_user@smtp.mail.ru:465″
set smtp_pass = password
set ssl_verify_host = no
set ssl_verify_dates = no
set ssl_starttls = no
set ssl_force_tls = yes
- smtp_user — имя учетной записи, под которой нужно авторизоваться на SMTP.
- smtp_pass — пароль для аутентификации.
- ssl_verify_host — нужно ли проверять валидность сертификата.
- ssl_verify_dates — нужно ли проверять дату действия сертификата.
- ssl_starttls — нужно ли использовать STARTTLS (обычно, при подключении по порту 587).
- ssl_force_tls — нужно ли использование SSL/TLS (обычно, при подключении по порту 465).
Теперь можно отправлять письмо:
echo «Mail From» | mutt -s «subject» -e ‘my_hdr From: Дмитрий ‘ — master@dmosk.ru
Отправить электронную почту в Linux из командной строки
В этой статье вы узнаете, как отправлять электронные письма с помощью популярных почтовых команд. Не менее важно, чтобы вы также научились отправлять вложения электронной почты Linux. Некоторые из используемых параметров командной строки:
- -s: обозначает тему письма
- -a: для обозначения вложения
- -c: для копии адреса электронной почты (CC)
- -b: адрес электронной почты для скрытой копии (BCC)
Linux Отправка электронной почты из командной строки
Мы узнаем о следующих командах для отправки электронных писем в Linux.
1. Использование почтовой команды
Почтовая команда Linux довольно популярна и обычно используется для отправки электронных писем из командной строки. Почта устанавливается как часть пакетов mailutils и mailx в системах Debian и Redhat соответственно. Две команды обрабатывают сообщения в командной строке. Чтобы установить mailutils в системах Debian и Ubuntu, запустите:
$ sudo apt install mailutils -y
Для дистрибутивов CentOS и RedHat запустите:
Тестирование почтовой команды
Если команда mail успешно установлена, протестируйте приложение, используя следующий формат, и нажмите клавишу ввода:
$ mail –s "Test Email" email_address
Замените email_address своим адресом электронной почты. Например,
$ mail –s "Test Email" james@example.com
$ echo "sample message" | mail -s "sample mail subject" email_address
$ echo "Hello world" | mail -s "Test" james@example.com
$ mail -s "subject" -A message.txt email_address
Флаг -A определяет вложение файла. Например;
$ mail -s "Important Notice" -A message.txt james@example.com
$ mail –s "test header" email_address email_address2
2. С помощью команды mailx
Mailx — это более новая версия команды mail, которая ранее называлась nail в других реализациях. Mailx существует с 1986 года и был включен в POSIX в 1992 году. Mailx является частью составного почтового пакета Debian, используемого для различных сценариев. Эту почтовую утилиту могут использовать пользователи, системные администраторы и разработчики. Реализация mailx также имеет ту же форму, что и синтаксис командной строки почты. Чтобы установить mailx в системах Debian/Ubuntu, выполните:
Чтобы установить mailx в RedHat и CentOS, выполните:
Тестирование команды Mailx
Вы можете использовать команду echo для направления вывода команде mail без запроса CC и тела сообщения, как показано здесь:
$ echo "message body" | mail -s "subject" email_address
$ echo "Make the most out of Linux!" | mail -s "Welcome to Linux" james@example.com
3. Использование команды MUTT
Mutt — это легкий почтовый клиент командной строки для Linux. В отличие от команды mail, которая может выполнять базовые действия, mutt может отправлять вложенные файлы. Mutt также читает электронную почту с серверов POP/IMAP и подключается к локальным пользователям через терминал. Чтобы установить mutt в системах Debian/Ubuntu, запустите:
Чтобы установить mutt в системах Redhat/CentOS, запустите:
Тестирование команды Mutt
Вы можете отправить пустое сообщение, используя mutt, с сразу после адреса электронной почты.
$ mutt -s "Test Email" email_address < /dev/null
$ mutt -s "Greetings" james@example.com < /dev/null
$ echo "Message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- email_address
$ echo "Hey guys! How's it going ?" | mutt -a report.doc -s "Notice !" -- james@jaykiarie.com
4. Использование команды mpack
Команда mpack используется для кодирования файла в сообщения MIME и отправки их одному или нескольким получателям или даже для публикации в разных группах новостей. Чтобы установить mpack в системах Debian/Ubuntu, выполните:
Чтобы установить mpack в системах Redhat/CentOS, выполните:
Тестирование команды mpack
Использование mpack для отправки электронной почты или вложения через командную строку так же просто, как:
$ mpack -s "Subject here" -a file email_address
$ mpack -s "Sales Report 2019" -a report.doc james@jaykiarie.com
5.Использование sendmail
Эта команда — еще один популярный SMTP-сервер, используемый во многих дистрибутивах. Чтобы установить sendmail в системах Debian/Ubuntu, выполните:
$ sudo apt install sendmail
Чтобы установить sendmail в системах RedHat/CentOS, выполните:
$ sudo yum install sendmail
Тестирование команды sendmail
Вы можете использовать следующие инструкции для отправки электронной почты с помощью команды sendmail:
Например, я создал файл report.doc со следующим текстом:
Команда для отправки сообщения будет,
Резюме
Хотя клиенты электронной почты с командной строкой намного проще и требуют меньше вычислений, вы можете использовать их только для отправки электронной почты на личные домены электронной почты, а не на домены Gmail или Yahoo, поскольку требуется дополнительная аутентификация. Кроме того, вы не можете получать электронные письма с внешних SMTP-серверов. Как правило, намного проще использовать почтовые клиенты с графическим интерфейсом, такие как Thunderbird или Evolution, чтобы избежать проблемы с недоставленными электронными письмами.