How to send email from Terminal?

I know there are ways to send email from terminal in Linux/MacOS, but I can't seem to find proper documentation on how to do that.

Basically I need it for my bash script that notifies me every time there is a change in a file.

2

8 Answers

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

Go into Terminal and type man mail for help.

You will need to set SMTP up:

See also:

Eg:

mail -s "hello" "" <<EOF
hello
world
EOF

This will send an email to with the subject hello and the message

Hello

World

2

Probably the simplest way is to use curl for this, there is no need to install any additional packages and it can be configured directly in a request.

Here is an example using gmail smtp server:

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

If all you need is a subject line (as in an alert message) simply do:

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

If you want to attach a file on Linux

echo 'mail content' | mailx -s 'email subject' -a attachment.txt 
2

in the terminal on your mac os or linux os type this code

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

for an example try this

mail -s "hi" <<< "how are you?"<br>

For SMTP hosts and Gmail I like to use Swaks ->

On a Mac:

  1. brew install swaks
  2. swaks --to --server smtp.example.com

I think swaks is the best. Here you have more complicated example, using TLS encryption on port 25:

swaks --from \
--h-From: '"John Smith" <>' \
--h-Subject: 'Subject of message' \
--auth LOGIN --auth-user mylogin --auth-pass mypass \
--to \
--server smtp.example.com --port 25 -tls \
--add-header 'Content-Type: text/plain; charset="utf-8"'

You Might Also Like