Rates change daily but it's unlikely that the rate will change significantly in your favour over the next three weeks. (If anything, it's likely to go the 'wrong' way).
M&S is probably your best bet but it won't be worth travelling miles to a branch with foreign exchange facilities if there's a post office just around the corner. (There won't be a lot of difference in the rates).
As has been stated countless times here on AB, the best way to get euros is usually to use a debit card (or credit card) at overseas ATMs. Even allowing for any charges involved, the exchange rate is usually good enough to provide you with a better deal than exchanging money before you travel.
Chris