Jim
Jim

Reputation: 321

email from bash script

#!/bin/bash
MESSAGE="Line one. /n"

MESSAGE="$MESSAGE Line two. /n"
MESSAGE="$MESSAGE Line three."

echo $MESSAGE | mail -s "test" "[email protected]"

Is that how I should get each line, on its own line?

Upvotes: 6

Views: 27229

Answers (3)

Jim
Jim

Reputation: 321

Change:

echo $MESSAGE | mail -s "test" "[email protected]"

To:

echo -e $MESSAGE | mail -s "test" "[email protected]"

Upvotes: 9

DigitalRoss
DigitalRoss

Reputation: 146053

The heredoc advice is good, plus you might want to consider using mailx for which there exists a Posix standard or perhaps sendmail which will exist if the mailer is either sendmail or postfix. (I'm not sure about qmail.)

Unless using sendmail, it's also a good idea to set the MAILRC variable to /dev/null to bypass the user's configuration script, if any.

Upvotes: 2

Matthew Flaschen
Matthew Flaschen

Reputation: 284786

Use a heredoc.

mail -s "test" "[email protected]" << END_MAIL
Line one.
Line two.
Line three.
END_MAIL

Upvotes: 16

Related Questions