Email formatting


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Email formatting
# 1  
Old 11-05-2003
Email formatting

ok, does anyone know how i can strip out fields i dont want from a mail spool file (eg: /var/mail/usermailbox) and dump to standard output (or file with > filename) ?? i tried using a bunch of grep -v 's but i realized that has two main problems, first of all, if anyone types the text im grepping out it will get removed, so i could tell grep to do it only once with -m 1 and so on, but there is going to be many emails in the mailbox.

so what i need is something like this:

Code:
From joe@farragutmarine.com  Tue Nov  4 22:34:54 2003
Return-Path: <joe@farragutmarine.com>
Delivered-To: main@farragutmarine.com
Received: from 192.168.1.103 (dynip4 [192.168.1.103])
        by farragutmarine.com (Postfix) with ESMTP id 0CD261700B
        for <main@farragutmarine.com>; Tue,  4 Nov 2003 22:34:54 -0500 (EST)
From: joe@farragutmarine.com
To: main@farragutmarine.com
Subject: This is a test
Date: Tue, 4 Nov 2003 23:12:40 -0500
User-Agent: KMail/1.5.1
MIME-Version: 1.0
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <200311042312.40075.joe@farragutmarine.com>

This is a test, lets see if i can get this thing working.

now please keep in mind that there will be multiple emails in the mailbox. the fields in BOLD are the fields id like to keep.


i dont expect anyone to write out a whole script for me, just someone to point me in the right direction.

thanks !
# 2  
Old 11-05-2003
this is from one of the guys off the chicago perl mailing lists.

Code:
you might want to take a
look at Mail::Box [2] on CPAN. Once you've got installed you can interact with 
all sorts of mail folders (mbox, maildir, imap4, pop) with a common interface.

Assuming you've got an mbox format file at /home/bgates/mbox, you could:

    use Mail::Box::Mbox;

    my $folder = Mail::Box::Mbox->new( folder => '/home/bgates/mbox' );

    foreach my $msg ( $folder->messages() ) { 
	print $msg->body(),"\n";
    }

Lazy, and nice to read -- at least for me :) You can do all sorts of 
crazy stuff like deleting, modifying, searching. Well worth a look at
if you need to do lots of work with mail messages.

//Ed


Last edited by Optimus_P; 11-06-2003 at 01:30 PM..
# 3  
Old 11-06-2003
that looks really great if it does what i think it does !! [EDIT: it does! ]
i will post back what i come up with, and thanks for the help O.P.!! Smilie

Last edited by norsk hedensk; 11-06-2003 at 06:57 PM..
# 4  
Old 11-06-2003
ok this is doing exactly what i want! thanks again Optimus_P

this is what i came up with, with only one problem which ill show you below.

Code:
#!/usr/bin/perl

use Mail::Box::Mbox;

my $folder = Mail::Box::Mbox->new( folder => '/home/joe/mbox' );
my $head = Mail::Message::Head->new;

foreach my $msg ( $folder->messages() )
{
        print "<b>", $msg->replyPrelude($head->get('From')),"</b>";
        print "<b>",$msg->subject(),"</b> \n";
        print $msg->body(),"\n";
}
mbox.pl lines 1-14/14 (END)

however one thing i cant figure out just yet is why $msg->replyPrelude($head->get('From')) only produces output like this :
On Thu Oct 13 04:54:34 1995, someone wrote:
instead of
On Thu Oct 13 04:54:34 1995, username@domain.com wrote:


the documentation at http://perl.overmeer.net is excellent for this module BTW.
# 5  
Old 11-06-2003
hmm one more thing, do you see anyway to reverse the order of the output? not simply outputing the last lines first, but starting with the last (latest message) then working its way up.
# 6  
Old 11-07-2003
sorry i cant assist you on this one norsk.

in all honesty i have pretty much forgotten all my perl (currently relearning it) since i dont use it offten.

but if you goto http://www.pm.org/ you can find a local perl group mailing list, i am sure they can assist you on anything perl related.

since there are 2 "From" fields. try putting a space after the "From " or use the other from field "From: ". but useing just 1 from would give it to many arguments possably?
# 7  
Old 11-07-2003
maybe. ill give it a try. that does exactly what i want it to, with the added benefit of being able to add in html formatting so i can put some nice looking tables in there and what not Smilie .

but i wanted to say thanks again because i wouldnt have figured that out without your help.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Getting email output in single line with out space in email

I have tried below email method and i am getting every thing in single line . i have put echo to provide space, but it is not helping my code ( echo "From: $FROM" echo "To: $MAILTO" echo "CC: $CC" echo "Subject: $SUBJECT" echo "MIME-Version: 1.0" echo 'Content-Type: multipart/mixed;... (6 Replies)
Discussion started by: mirwasim
6 Replies

2. UNIX for Dummies Questions & Answers

Email formatting gets disturbed because of screen resolution

Hi friends, I have written a shell script which send a report to email address everyday. The report is generated on UNIX server every day, Generated report is sent to 25 users through cron. All 25 users have set different screen resolution for their monitor. The email looks wel formatted for... (4 Replies)
Discussion started by: Nakul_sh
4 Replies

3. UNIX for Dummies Questions & Answers

Formatting The Email Output

Hello All, When i use the single quotes around the variables i am getting each line in the array as seperate in the email as shown in code2 & output2. But i don't want those single quotes to be printed but each array element should be printed as seperate line as when i remove those single quotes... (1 Reply)
Discussion started by: Ariean
1 Replies

4. Shell Programming and Scripting

[Solved] Sending a HTML email from cli loses formatting.

Hi, I have a .sh file, to email a report of our backups from a linux machine. It looks like this (minus a few bits): echo "HELO $host.$domain" sleep 1 echo "mail from: vdrreport@$domain" sleep 1 echo "rcpt to:$mailto" sleep 1 echo "data" sleep 1 echo "subject: $host VDR-Report... (2 Replies)
Discussion started by: cognito
2 Replies

5. Windows & DOS: Issues & Discussions

email from *nix to Exchange - text formatting issue

Oracle Linux 5.6 x-86-64 (Red Hat derivitive) I have several shell scripts that capture output to a log file, then use that log file as the source of an email. For a very simplified example: echo Today is `date` >> $logfile /bin/mail -s "$subject" "$sendto" < $logfile (yes, $subject... (6 Replies)
Discussion started by: edstevens
6 Replies

6. Shell Programming and Scripting

Using top command to email if process is exceeding 25% and sending an email alert if so

This is my first time writing a script and Im having some trouble, Im trying to use the top command to monitor processes and the amount of CPU usage they require, my aim is to get an email if a process takes over a certain percentage of CPU usage I tried grep Obviosly that hasnt worked, Any... (8 Replies)
Discussion started by: jay02
8 Replies

7. UNIX for Dummies Questions & Answers

new to ldap, send email to a ou or group, and see a list from email client

hi, i'm running openldap on ubuntu 10.04, creating new items with apache directory studio (windows version). i use the ldap just as an address book to our small office (email clients are windows live mail 2009, 2011, microsoft outlook 2007 and 2010). a. i cant see a list of the contacts,... (0 Replies)
Discussion started by: V4705
0 Replies

8. Solaris

Send an email from Solaris using Linux email server

Hello everyone I have a problem and I need your help: I have a Solaris 10 and Solaris 8 UNIX Servers, and Linux Centos4 as email server. I need send an email from Solaris servers preferably using Centos4 email server. I have no mail service configured in my Solaris computers (1 Reply)
Discussion started by: aflores
1 Replies

9. UNIX for Dummies Questions & Answers

Send email where # is in the email address - Using Unix

Hi All, How do I send an email using malix where email address contains a #. I have a email address like this : #test@test.com I want to send email like malix -s "TEST" #test@test.com < SOMEFILE I tried \# but doesn't work. Please let me know how we can achieve this? I am in... (1 Reply)
Discussion started by: jingi1234
1 Replies

10. UNIX for Advanced & Expert Users

Unable to send eMail from a UNIX-Host ( using mailx ) to a Outlook-email-addres(Win)

Hi A) I am able to send eMail using mailx from a UNIX ( solaris 8 ) host to my Outlook-email-ID : FName.Surname@Citigroup.com ( This is NOT my actual -eMail-ID). But in Outlook the "From :" eMail address is displayed as " usr1@unix-host1.unregistered.email.citicorp.com " .i.e the words... (2 Replies)
Discussion started by: Vetrivela
2 Replies
Login or Register to Ask a Question