На этот вопрос уже есть ответ здесь:
Вот что у меня есть:
cat UserReport.txt | mail -s "TestSubject" "nospam@gmail.com"
Это небольшой файл, намного меньше чем изображение, поэтому его следует отправить почти мгновенно. Хотя ничего не получаю. Я установил mailutils
, но мог установить его неправильно.
Как я могу отправить электронное письмо из сценария bash?
В первую очередь, необходимо установить и настроить Постфикс для Использования Gmail SMTP на Ubuntu.
Установите все необходимые пакеты:
$ sudo apt-get install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules
Если у Вас не будет постфикса установленным прежде, то в постфиксном мастере конфигурации будут заданы Вам некоторые вопросы. Просто выберите свой сервер, поскольку сайт и для FQDN использует что-то как mail.example.com
Затем откройте свой постфиксный файл конфигурации:
$ sudo -H gedit /etc/postfix/main.cf
и добавьте следующие строки к нему:
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
Вы, возможно, заметили, что мы не указали наше имя пользователя Gmail и пароль в вышеупомянутых строках. Они войдут в другой файл. Откройтесь/Создайте:
$ sudo -H gedit /etc/postfix/sasl_passwd
И добавьте следующую строку:
[smtp.gmail.com]:587 USERMAIL@gmail.com:PASSWORD
Если Вы хотите использовать свой домен Приложения Google, замените @gmail.com своим @domain.com.
Исправьте разрешение и обновите постфиксную конфигурацию для использования sasl_passwd файла:
$ sudo chmod 400 /etc/postfix/sasl_passwd
$ sudo postmap /etc/postfix/sasl_passwd
Затем, проверьте сертификаты, чтобы не сталкиваться с ошибкой. Просто выполненный после команды:
$ cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/cacert.pem
Наконец, перезагрузите постфиксную конфигурацию для изменений для вступления в силу:
$ sudo /etc/init.d/postfix reload
Если Вы настроили все правильно, после команды должен генерировать тестовую почту от Вашего сервера до Вашего почтового ящика.
echo "Test mail from postfix" | mail -s "Test Postfix" you@example.com
Для дальнейшей проверки, если почта, отправленная от вышеупомянутой команды, на самом деле отправляется через сервер SMTP Gmail, можно войти в Gmail, считают USERNAME@gmail.com с ПАРОЛЕМ и проверяют папку "Sent Mail" в ту учетную запись Gmail. По умолчанию Gmail всегда сохраняет копию почты, отправляемой через ее веб-интерфейс, а также сервер SMTP. Этот вход является одной веской причиной, что мы часто используем Gmail, когда доставка почты очень важна.
Необходимо разблокировать капчу путем посещения этой страницы https://www.google.com/accounts/DisplayUnlockCaptcha
Можно запустить тест снова после разблокирования капчи.
источник
mail
и mutt
для отправки электронных писем обратите внимание на это, если Вы хотите отправить файл вложения через mail
команда это не поддержка или лучше, что я говорю, что не могу отправить свой прикрепленный файл через mail
команда, вместо этого можно использовать mutt
командная строка, это очень полезно. и в mutt
команда необходимо ввести аргументы вложения после адреса электронной почты. Я тестирую его, и хорошо работает. можно установить mutt
через эту команду:
$ sudo apt-get install mutt
Используя mail
mail -s "TestSubject" nospam@gmail.com -a "UserReport.txt" < MessageBody.txt
Используя mutt
mutt -s "TestSubject" nospam@gmail.com -a "UserReport.txt" < MessageBody.txt
В то время как UserReport.txt
Ваш файл вложения, MessageBody
текст/файл Вашего тела электронной почты, TestSubject
Ваш почтовый предмет.
-s
флаг используется для "Предмета" и -a
флаг используется для "Файла вложения"
* ОБНОВИЛ МНОГО ЛЕТ СПУСТЯ * (работающий над Ubuntu 16)
1 - Позволяют "меньшему количеству защищенных приложений" соединяться с Вашим Gmail, переходя по этой ссылке:
https://myaccount.google.com/lesssecureapps?pli=1
2 - Выполнение следующие команды:
sudo update-ca-certificates
sudo apt-get install msmtp-mta
nano ~/.msmtprc
3 - Набор следующая конфигурация msmtp (заменяют yourMail@gmail.com, yourUsername и yourPassword):
account gmail
auth on
host smtp.gmail.com
port 587
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
from yourMail@gmail.com
user yourUsername
password yourPassword
account default : gmail
4 - почта Конфигурации для использования msmtp:
nano ~/.mailrc
5 - Вставка это:
set sendmail="/usr/bin/msmtp"
6 - Наконец отправляют, Ваша почта (замените mail@server.com):
echo hello | mail -s test mail@server.com
6.1 - Альтернатива можно использовать "mailx" для ровной отправки вложений легко:
echo "mail body" | mailx -a /path/to/your/file.doc -s "mail subject" mail@server.com
Ваша строка могла посмотреть самым коротким способом как в этом небольшом сценарии оболочки:
#!/bin/bash
cat email.txt && sendmail user@example.com < /tmp/email.txt