Can't tell if the problem's with xymon or your grep. Try using a debug script something like the below, just to see what you're getting in all the variables.
cat /usr/local/scripts/mailxy
#!/bin/bash echo $BBALPHAMSG >> /tmp/msg.$$ echo " " >>/tmp/msg.$$ echo "available information" >> /tmp/msg.$$ echo " " >>/tmp/msg.$$ echo " BB is $BB " >> /tmp/msg.$$ echo " BBCOLORLEVEL is $BBCOLORLEVEL " >> /tmp/msg.$$ echo " ACKCODE is $ACKCODE " >> /tmp/msg.$$ echo " RCPT is $RCPT " >> /tmp/msg.$$ echo " BBHOSTNAME is $BBHOSTNAME " >> /tmp/msg.$$ echo " MACHIP is $MACHIP " >> /tmp/msg.$$ echo " BBSVCNAME is $BBSVCNAME " >> /tmp/msg.$$ echo " BBSVCNUM is $BBSVCNUM " >> /tmp/msg.$$ echo " BBHOSTSVC is $BBHOSTSVC " >> /tmp/msg.$$ echo " BBHOSTSVCCOMMAS is $BBHOSTSVCCOMMAS " >> /tmp/msg.$$ echo " BBNUMERIC is $BBNUMERIC " >> /tmp/msg.$$ echo " RECOVERED is $RECOVERED " >> /tmp/msg.$$ echo " DOWNSECS is $DOWNSECS " >> /tmp/msg.$$ echo " DOWNSECSMSG is $DOWNSECSMSG " >> /tmp/msg.$$ echo " BBALPHAMSG is $BBALPHAMSG " >> /tmp/msg.$$
/bin/mailx -s "$BBHOSTSVC $BBCOLORLEVEL" $RCPT < /tmp/msg.$$ rm /tmp/msg.$$