use email subject line as shell command


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users use email subject line as shell command
# 1  
Old 01-26-2005
use email subject line as shell command

If anyone can give me some ideas on this it would be great. What I'm trying to do is to have emails be sent to my unix account. Once they are emailed to the unix account, I want to use the text in the subject field to invoke a shell script, so basically I need to find a way that I can automatically forward the subject line to the unix command prompt. Any ideas??

My other problem is that these emails will have attachments. I want these attachments to be saved to the home directory (or any other directory) automatically when the email is received.

Any help will be greatly appreciated.
# 2  
Old 01-26-2005
Im in graduate school in Software Engineering. We use an email repository system built by the dean of our department that is used for students to submit their programming assignments to the instructor. The system is implemented using C shell scripts. The downfall of the system is that the student must be at school, logged in to their unix account in order to submit their program to the instructor.

I'm trying to find a way that will enable students to email their program to the instructor from home using their hotmail, yahoo, or any other email system so that they do not need to be at school to submit their programs. I'm trying to accomplish this by having a script run automatically when an email is received on the instructors unix email account. The script will check the first word of the subject line, if the first word is "XSsubmit" then I want to save all of the attachments to a directory (the files must be in the directory for the submit command to submit the files), then forward the entire subject line to a command prompt and run the command. Then this will submit the files to the instructors submission repository.

This is where my problem comes in. I need to get the attachments saved to the directory automatically, and then I need to get the subject field to a command prompt to invoke the submit script but have no idea how to.

I was going through some of the forum questions and saw that you are not supposed to post homework questions. This is not a homework assignment that I'm doing, its an entire project that I am working on that I'm trying to actually get into production.

Any help, pointing in the right direction like a book, website, anything would be great.

Last edited by mskarica; 01-28-2005 at 09:29 PM.. Reason: explain question better
# 3  
Old 01-31-2005
For the good or the bad of it, I've used systems similar to this before web browsers were widely used. In fact, one that comes to mind was Oracle's support site; albeit, commands were not issued to the O/S but were interpreted by some application running somewhere. You could submit trouble tickets, query status, etc. Another that comes to mind was an ftp service that would email you chunks of files that could be reassembled later on. This was useful when some networks were too young to offer more than email capabilities.

Your problem seems easy enough to solve. You're going to want to loop through all of your new messages issuing whatever commands necessary to save off the message body to the filesystem. Then, once the files are saved, launch your subject line command.

Here are some things that may help you get started.

Supposing that you wish to use mailx to process the message, you'll want to loop through the messages and filter on your key word:

For my quick test, I sent myself a message with "RunMe=ls" in the subject line. mailx shows this to be the last field of the output of mailx -H

Code:
$ mailx -H

N  4 Joe Smith     Mon Jan 31 16:44  111/2759  RunMe=ls

So I can run something like this and use the UNIX eval comand to process some of the text in the subject line (you wanted csh but I don't use csh; here's ksh):
Code:
#!/bin/ksh
mailx -H  | grep RunMe | while read LINE
do
    SUBJECT_CMD=$(print ${LINE} | awk -F= '{print $2}')

    # Parse more of ${LINE} and issue some command to save the message body to the filesystem
    ...
    # now run the subject text
    eval ${SUBJECT_CMD}
done

All this did was parse out the last field that mailx -H. The text following the "=" symbol was passed to the UNIX eval command. eval will execute the contents of the string ${SUBJECT_CMD}. The output happens to be that of a simple "ls" command.

Hope this helps you get closer toward your solution.

Thomas
# 4  
Old 01-31-2005
Actually, my dean is a pretty good programmer, at least with shell scripts. He gave me a clue on what to do, so I'll post it for anyone to see.

In the home directory you can put a file named .forward in which you can forward your email. In the .forward file I can forward the emails to a script instead of to another email address. When the email is forwarded to the script, the subject and the body of the email is passed into the script as parameters......something like that......thats where I'm at right now, so I will do some more research on this.

Thanks for the reply tmarikle, I'll look into what you said also. It looks like that would help out also.
# 5  
Old 02-01-2005
Quote:
Originally Posted by mskarica
I want to use the text in the subject field to invoke a shell script, so basically I need to find a way that I can automatically forward the subject line to the unix command prompt. Any ideas??

My other problem is that these emails will have attachments. I want these attachments to be saved to the home directory (or any other directory) automatically when the email is received.

Any help will be greatly appreciated.
This is a somewhat easy problem to solve with procmail.

www.procmail.org

That is what I use for all these types of solutions. After you get familar with procmail, you can do many things you would never dream of using mail as an input to a filter Smilie

Neo
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Variable not displaying in subject line of mailx email

Hi Newbie here with first post. I've got a shell script (ksh) whereby I run a SQL*Plus script and output the results to a file. I then check the output file in an if statement that looks like this: if ]; then export GAPNUM=`awk '{print $4}' $OUTFILE` if ] then mailx -s... (10 Replies)
Discussion started by: ltzwoman
10 Replies

2. Shell Programming and Scripting

Sending sql output to email body with conditional subject line

hi , i have written below piece of code to meet the requirement but i am stuck in the logic here. the requirement are: 1) to send the sql out put to email body with proper formatting. 2) if count_matching = Yes then mail should triggered with the subject line ... (10 Replies)
Discussion started by: itzkashi
10 Replies

3. UNIX Desktop Questions & Answers

Send Email from command line in Ubuntu 11.10

Have problem to send email from command line according to the posts like this one: To have the ability to send email from the command line, you will need to install the mailutils and postfix packages with the following commands. apt-get install mailutils apt-get install postfix Now... (1 Reply)
Discussion started by: yifangt
1 Replies

4. Shell Programming and Scripting

Subject line of an email

Hi all, I am trying to automate a process in which at the end of the process the script should send an email to the user saying this process is completed. I have done everything but the problem now is the subject line of the email... the subject line looks like this.. where abc xyz is a... (4 Replies)
Discussion started by: smarty86
4 Replies

5. Ubuntu

Command line email help needed

Hi, having some problems getting commandline mail to work for root user in ubuntu. Ive installed the following packages - msmtp & mailx and the cert for gmail. I've created 3 files: mailrc and msmtprc in /home/username directory and /etc/exim4/passwd.client mailrc ------ set... (0 Replies)
Discussion started by: ziggycat
0 Replies

6. Shell Programming and Scripting

help with script to send email and if subject line match is found

Help with script that will check log, then find a match is found, add that as the subject line. 1. The script will always run as a deamon.. and scan the event.log file 2. when a new 101 line is added to the event.log file, have the script check position 5,6 and 7 which is the job name, which... (2 Replies)
Discussion started by: axdelg
2 Replies

7. Shell Programming and Scripting

executing/including command in mailx subject line

Hi, Is it possible for me to include the results from a command in the subject line? What I am looking to do is get the file count and include it into the subject line as well as the list of files in the body. Example Subject line: Currently 25 files in directory My Code: #!/bin/ksh cd... (2 Replies)
Discussion started by: ozifer
2 Replies

8. Shell Programming and Scripting

Run a script based on the subject line of the email

Hi, I need help in running a script that would pull info from an email subject line and run a script (foo.sh). I'm pretty sure after a bit of googling that this is possible in several ways. but none was pretty clear on how to accomplish it. The part that I really need help with is getting the... (5 Replies)
Discussion started by: satekn
5 Replies

9. UNIX for Advanced & Expert Users

create email w/ ASCII attachment via command-line

All, I need to email an ASCII data file to a business partner, and intended on creating a Korn Shell script to create an email message (minimal text), and attach the ASCII data file to the email. It seems this is not as easy as I had thought it might be. sendmail does not support... (3 Replies)
Discussion started by: jwperry
3 Replies
Login or Register to Ask a Question