.. I'm having one or two problems with it. I fire up Query Analyser and type "xp_findnextmsg" and click the little green arrow. Bingo, I get... something:

"0x000000001408D2699E035F45A5E58B57D08E4CD5010001B 57242E783C4298168EB2D253BA410000000092770000"

well, it could be an email ID. So I use a chunk of code shamelessly copied from someone else's post to read the email behind it:
declare @status int declare @skip_bytes int declare @message char(8000) declare
@msg_id varchar(50) declare @msg_length int

WHILE (1 = 1) BEGIN EXEC @status = xp_readmail @msg_id = '0x000000001408D2699E035F45A5E58B57D08E4CD5010001B57242E483C4298168EB2D253BA410000000092770000',
@message = @message OUTPUT,
@skip_bytes = @skip_bytes OUTPUT,
@msg_length = @msg_length OUTPUT

IF @status <> 0 BREAK

SELECT 'msg_id' = @msg_id, 'msg_part' = @message IF @skip_bytes
= @msg_length BREAK END
but that returns msg_id as null and msg_part as... empty. Nothing. Zip.

Of course, it could be that something isn't configured right but after spending 2 days trawling MSDN knowledge base articles, I think I've got Outlook talking to Exchange talking to SQL Server. Probably. Does anyone have any suggestions?