Как отправить электронное письмо с помощью командной строки? [дубликат]

На этот вопрос уже есть ответ здесь:

Вот что у меня есть:

cat UserReport.txt | mail -s "TestSubject" "nospam@gmail.com"

Это небольшой файл, намного меньше чем изображение, поэтому его следует отправить почти мгновенно. Хотя ничего не получаю. Я установил mailutils , но мог установить его неправильно.

Как я могу отправить электронное письмо из сценария bash?

16
задан 10 September 2014 в 19:59

3 ответа

В первую очередь, необходимо установить и настроить Постфикс для Использования 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

Тестирование

Проверьте, отправляются ли письма через Gmail сервер SMTP

Если Вы настроили все правильно, после команды должен генерировать тестовую почту от Вашего сервера до Вашего почтового ящика.

echo "Test mail from postfix" | mail -s "Test Postfix" you@example.com

Для дальнейшей проверки, если почта, отправленная от вышеупомянутой команды, на самом деле отправляется через сервер SMTP Gmail, можно войти в Gmail, считают USERNAME@gmail.com с ПАРОЛЕМ и проверяют папку "Sent Mail" в ту учетную запись Gmail. По умолчанию Gmail всегда сохраняет копию почты, отправляемой через ее веб-интерфейс, а также сервер SMTP. Этот вход является одной веской причиной, что мы часто используем Gmail, когда доставка почты очень важна.

Поиск и устранение неисправностей

Ошибка: "Аутентификация SASL перестала работать; сервер smtp.gmail.com"

Необходимо разблокировать капчу путем посещения этой страницы 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 флаг используется для "Файла вложения"

29
ответ дан 16 November 2019 в 13:11

* ОБНОВИЛ МНОГО ЛЕТ СПУСТЯ * (работающий над 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
1
ответ дан 16 November 2019 в 13:11

Ваша строка могла посмотреть самым коротким способом как в этом небольшом сценарии оболочки:

#!/bin/bash
cat email.txt && sendmail user@example.com < /tmp/email.txt
1
ответ дан 16 November 2019 в 13:11

Другие вопросы по тегам:

Похожие вопросы: