How can I set sender name and email address using mail command in shell script.

  • 3
    By using commandline paramaters (try mail --help) – Anthon May 4 '15 at 6:43

Try this:

mail -s 'Some Subject' -r 'First Last <you@example.com>' recipient@example.net

This sets both From: and the envelope sender.

  • 2
    mail: invalid option -- 'r' :( – Daniel Loureiro Jun 9 '16 at 12:45
  • 2
    @DanielLoureiro Right, Heirloom mailx has -r, but it isn't required by POSIX. Still good enough for *BSD and Linux. :) – lcd047 Jun 9 '16 at 14:10
  • works in centos 7 x64 – Nick Dong Feb 26 '17 at 16:11
  • depends on the mail/mailx implementation in your distro; what I found it works is appending a header variable: --append="FROM:Foghorn Leghorn <sender@your-domain.com>" – scrat.squirrel May 21 '18 at 23:30
  • @woohoo depends on the mail/mailx implementation in your distro - That of course applies equally to your solution. With my Heirloom mailx: mail: illegal option -- -. – lcd047 May 24 '18 at 12:13

The option -a populates the header.

quick command:

mail -a FROM:sender@my-domain.com recipient@another-domain.fr

long command

mail --append="FROM:sender@my-domain.com" recipient@another-domain.fr

 Usage: mail [OPTION...] [address...]

  -a, --append=HEADER: VALUE     append given header to 
                                 the message being sent

  -A, --attach=FILE              attach FILE
      --content-type=TYPE        set content type for 
                                 subsequent --attach options

  -e, --exist                    return true if mail exists
      --encoding=NAME            set encoding for subsequent 
                                 --attach options

  -E, --exec=COMMAND             execute COMMAND

  -F, --byname                   save messages according to sender

  -H, --headers                  write a header summary and exit

  -i, --ignore                   ignore interrupts

  -n, --norc                     do not read the system mailrc file

  -N, --nosum                    do not display initial header summary

  -p, --print, --read            print all mail to standard output

  -q, --quit                     cause interrupts to terminate program

  -r, --return-address=ADDRESS   use address as the return address 
                                 when sending mail

  -s, --subject=SUBJ             send a message with the given SUBJECT

  -t, --to                       precede message by a list of addresses

  -u, --user=USER                operate on USER's mailbox

Common options

  --config-file=FILE, --rcfile=FILE
                         load this configuration file

  --config-help          show configuration file summary

  --config-lint, --rcfile-lint
                         check configuration file syntax and exit

  --config-verbose, --rcfile-verbose
                         verbosely log parsing of the configuration files

  --no-site-config, --no-site-rcfile
                         do not load site configuration file

  --no-user-config, --no-user-rcfile
                         do not load user configuration file

  --set=PARAM=VALUE      set configuration parameter

  --show-config-options  show compilation options

Global debugging settings

--debug-level=LEVEL    set Mailutils debugging level

--debug-line-info      show source info with debugging messages

-?, --help             give this help list
    --usage            give a short usage message

-V, --version          print program version

Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options.


That depends which mail client you are using. Some Linux distributions link to mailx where you can use the -r from-addr parameter.

If you have mutt you should be able to use mutt -e "set from='name <name@somewhere>'>.

Other distributions which have the mail command should be able to use echo "test"|mail -s "subject" address@recipient.com -- -f from@address.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.