Как отправить письмо с терминала?


169

Я знаю, что есть способы отправки электронной почты с терминала в Linux / MacOS, но я не могу найти соответствующую документацию о том, как это сделать.

В основном мне это нужно для моего bash-скрипта, который уведомляет меня каждый раз, когда в файле происходит изменение.


3
Здесь, вероятно, следует отметить, что некоторые хосты и интернет-провайдеры «отключают» возможность отправки электронной почты. Я предполагаю, что это попытка остановить людей, рассылающих спам и фишинг через них
Джим Джеффрис

@JimJeffries Какие из них? Я использую веб-сервер Amazon EC2.
ckjbgames

Ответы:


125

Зайдите в Терминал и введите man mailпомощь.

Вам нужно будет настроить SMTP:

http://hints.macworld.com/article.php?story=20081217161612647

Смотрите также:

http://www.mactricksandtips.com/2008/09/send-mail-over-your-network.html

Например:

mail -s "hello" "example@example.com" <<EOF
hello
world
EOF

Это отправит электронное письмо example@example.comс темой helloи сообщением

Привет

Мир


Я только что попробовал, и это сработало для меня, но у меня есть два вопроса из моего любопытства. Что означает «<<», в Интернете я видел несколько примеров с «<» или «<<. ' Для чего его используют? И почему вы дали End Of File там и в конце сообщения?
глубокое

«<< EOF» и «EOF» обозначают «здесь-документ». Текст между двумя EOF рассматривается как многострочная строка в кавычках. Это описано в «Man Bash»
Джо Inwap

134
echo "this is the body" | mail -s "this is the subject" "to@address"

20
Обратите внимание, что все эти решения предполагают, что у вас есть локально установленный MTA
Miquel

11
@ Микель хорошая мысль. В Ubuntu вы можете получить необходимые условия через sudo apt-get install mailutils.
Earldouglas

3
@James, это не работает для моего MAC (((Не могли бы вы мне помочь?
neo

1
Пошаговое руководство: rianjs.net/2013/08/…
Душан Макар

Странный. Это дает мне сообщение «SyntaxError: неверный синтаксис», хотя единственное изменение, которое я сделал, - это изменение адреса.
Jewenile

41

Если вам нужна только строка темы (как в сообщении с предупреждением), просто выполните:

mailx -s "This is all she wrote" < /dev/null "myself@myaddress"

Возможно, вам придется установить mailutils. Его можно установить через менеджер пакетов (например apt install mailutils)
Jeevan Takhar

31

Вероятно, самый простой способ использовать curlэто - нет необходимости устанавливать какие-либо дополнительные пакеты, и это можно настроить непосредственно в запросе.

Вот пример использования сервера SMTP Gmail:

curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
  --mail-from 'from-email@gmail.com' \
  --mail-rcpt 'to-email@gmail.com' \
  --user 'from-email@gmail.com:YourPassword' \
  -T <(echo -e 'From: from-email@gmail.com\nTo: to-email@gmail.com\nSubject: Curl Test\n\nHello')

Это действительно хороший вариант. Вы можете создать специальный пароль приложения для своей учетной записи Google, и он просто доставит письмо из вашей учетной записи. Очень круто!
Дакдад

2
Отличный ответ, наконец, не забудьте включить менее безопасное приложение, чтобы заставить работать myaccount.google.com/lesssecureapps
yubaraj poudel

@aliaksandr должен добавить этот последний пункт к своему ответу. По умолчанию эта опция (предоставить доступ к менее защищенным приложениям) отключена и неочевидна. По крайней мере, если вы используете учетную запись Gmail в качестве отправителя электронной почты.
EAmez

18

Если вы хотите прикрепить файл в Linux

echo 'mail content' | mailx -s 'email subject' -a attachment.txt username@stackoverflow.com

4
Это дает invalid headerсообщение для моего прикрепленного файла. Правильный вариант был в верхнем регистре -A.
Стефан

3
@ Stephane По словам Патрика-Хью, -a это переключатель вложения. -А для команды учетной записи. См. Справочную
MiaeKim

10

в терминале на вашей Mac OS или Linux OS введите этот код

mail -s (subject) (receiversEmailAddress)  <<< "how are you?"

для примера попробуйте это

mail -s "hi" abc@example.com <<< "how are you?"<br>

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.