The main problem is that the factory "gaskets" between the lamps and the wing are open cell foam. This traps and holds the water and gets the corrosion started. For my car, I have replaced these with gaskets made out of car tyre inner tube. They fulfill the originally intended function of preventing under wing spray from emerging out past the sides of the lamps to discolour the body, but don't hold water.
Chris