Re: Extracting email headers
On Mon, Sep 02, 2002 at 09:38:44PM -0400, Andy Saxena wrote:
| Hi,
|
| The problem is really simple.
|
| I receive email on my long commute, and I'd like to be able to send some
| of the more important messages to my cellphone, so I can make the
| necessary calls.
|
| The trouble is that my cellphone can only receive about 100 characters
| in the body of the email. So my plan is to use a procmail recipe to
| filter out the important messages and send the subject and the sender's
| name in the subject line of the email to the cellphone; then the body of
| the email will have the first 100 characters from the body of the
| original email.
|
| I am trying to use formail to extract the "From: " and "Subject"
| headers, and then use tr to put them one line by eliminating the
| newline. However, I am having no success in this. I have read the
| manuals and tried all the options. Obviously, this is not working.
|
| Could somebody provide some pointers on how to retrieve two headers from
| the email and combine them into one line?
|
| Even better if somebody has a more eloquent solution :-}.
|
I found a solution thanks to the efforts of a kind gentleman in Karachi.
His email to me is shown below. I also modified the solution to add
another feature. Details below.
---------------------------Faisal's email (begin)----------------------
From: "Faisal S. Naik" <faisal@hamdard.net.pk>
To: "Andy Saxena" <andyML@nyc.rr.com>
Subject: Re: did u get a solution
Date: Thu, 12 Sep 2002 15:20:48 +0600
Hi once again
Here is a link i found while searching a solution to our problem :)
http://pm-doc.sourceforge.net/pm-tips.html
Section 14.4 caters to it. I tried it but it is give me errors in the
procmail.log file
Hope it helps you. If you are successful please let me know
Regards,
---
n.g
---------------------------Faisal's email (end)----------------------
Here's my modified version of the procmail recipe that gets rid of the
errors (caused by a missing "\") and also only sends me the email if it
arrives in the inbox between 7 AM and 6 PM. This is my work email, so
obviously I don't want my cellphone beeping while I am enjoying a
fabulous evening in pleasant company or asleep at night. Only the
relevant parts of the procmailrc file are shown.
---------------------~/.procmailrc (begin)----------------------------
#I use IMAP not POP.
DELIVERMAIL="/usr/sbin/cyrdeliver"
IMAP="$DELIVERMAIL -a andy -q -m user.andy"
#Great for troubleshooting.
LOGFILE="$HOME/.maillog"
VERBOSE="yes"
# I need this because for some reason cyrdeliver will reject email with
# the "From " envelope header, and I don't know any other solution.
:0fw
| spamassassin -P -F0
# This will send a message to my cellphone causing it to beep. The
# original idea was to split the message body into lines no longer than
# 200 characters, and then send each piece in a separate email. However,
# I am really not interested in the message arriving in 20 pieces and
# flooding my small inbox on the cellphone. Therefore, I use "head -n1"
# to generate only one message. Also I wanted a 100 character limit.
# This solution preserves the original "From: " and "Subject: " headers.
:0 c
{
# Construct only from From: and Subject:
HEADER = `formail -XFrom: -XSubject:`
:0 bw
| tr '\012' ' ' | fold -s -w 100 | head -n1 | \
if [ `date +%H` -gt 7 ] && [ `date +%H` -lt 18 ]; then \
while read line; do \
echo -e "$HEADER\n\n$line" | $SENDMAIL my@email.com; done \
fi
}
:0
| $IMAP
---------------------~/.procmailrc (end)------------------------------
-Andy
Reply to: