Mutt runng from Crontab
Solution 1
The easiest way to make sure the email that is sending with the correct name would be to run the cron job on the account you need it to send out:
Example
me@domain:~$ crontab -e
If you want the root user to send out the messages through mutt, try this one liner (it worked for me):
export EMAIL="Me <[email protected]>" && mutt -s "subject" -a /home/user/directory/file*.xls -- [email protected], [email protected] < /home/user/directory/message.txt
Hope this helps.
Solution 2
Use /etc/crontab
instead of cron
since you can use that to include a username that is used to start the command you need to start.
Example:
more /etc/crontab
shows
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repor t /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --repor t /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repor t /etc/cron.monthly ) #
Include your line from cron into this file and add the username between dow (day of week) and command. The script will then be started as that user.
This is a bit better than doing this in a users crontab since you can include the same line in here for every user you need it and do not need to maintain several crontabs.
If you need root to access certain files you should change the permissions for it or create a group that includes that command and your users.
Related videos on Youtube
Comments
-
klcant over 1 year
I have a bash script that is sending an email through command line mutt. This bash script is being called from a cron job (setup using crontab -e because of permissions needed to do all items in the script). I set the from address so that users can reply (which works fine), but the name being shown is "root". This is causing some confusion. Is there an actual way to set the name associated with the email address?
The email portion of the script is below:
[email protected] export EMAIL mutt -s "subject" -a /home/user/directory/file*.xls -- [email protected], [email protected] < /home/user/directory/message.txt
Thanks
Kevin
-
ruffEdgz about 12 yearsI'm curious, does the email just say "From: Root <root@domain>" or does it say "From: Root <[email protected]>"?
-
klcant almost 12 years@ruffEdgz it says "root <[email protected]>"
-
ruffEdgz almost 12 years@klcabt then my solution should work or just update your EMAIL variable to look like my example below (with the name and email address).
-
klcant almost 12 years@ruffEdgz That is what I was looking for. Thanks for your help!
-
-
klcant almost 12 yearsPutting the name and address in quotes was the secret sauce! Thanks!