Як надіслати електронний лист від терміналу?


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та повідомленням

Здравствуйте

Світ


Я просто спробував, і це спрацювало у мене, але у мене з цікавості є два питання.1. Що означає "<<", в Інтернеті я бачив кілька прикладів з "<" або "<<. 'Для чого це використовується? І чому ви надали 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 (((Не могли б ви мені допомогти?
нео

1
Покроковий посібник: rianjs.net/2013/08/…
Dušan Maďar

Дивно. Це дає мені повідомлення "SyntaxError: недійсний синтаксис", хоча єдиною зміною, яку я вніс, було зміна адреси.
Jewenile

41

Якщо вам потрібно лише тематичний рядок (як у попереджувальному повідомленні), просто виконайте:

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

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

31

Напевно, найпростішим способом є використання curlдля цього, немає необхідності встановлювати додаткові пакети, і це можна налаштувати безпосередньо в запиті.

Ось приклад використання сервера gmail smtp:

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, і це просто доставить електронну пошту з вашого власного облікового запису. Дуже круто!
dakdad

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 - перемикач кріплення. -А - для команди рахунку. Дивіться сторінку чоловіка: linux.die.net/man/1/mailx
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.