Someone who has your address legitimately has sold it. I get to the bottom of these scams by giving a different middle initial every time I have to give name and address. For instance, for Amazon, I am "Atalanta A ******". For Lakeland, I am "Atalanta L ******". For a tour operator I travel with, I am "Atalanta V ******". For a cookshop I deal with, I am "Atalanta C ******". So I can easily see which one has sold my details to some charity ( which may easily be a bogus charity, when you think about it.) Then I can write a viciously polite letter to the managing director of the company which has sold me down the river, telling him/her what I think of the company's morals.
Not that any of the above companies has ever done this - if I told you which ones have done so, there could be trouble. Try it for yourselves.