AirDrop smart contratct

I want to distribute my token through an AirDrop with the following characteristics: there will be an address where everyone can send a donation for a specific period, after the end of the period the tokens will be distributed automatically and proportionally to the donation to each address, in a given also determined. oh and what is the most economical way to do this distribution?