Easy way: Have the customer enter the recipient's shipping / email for the order.
Alternative way: Create a "gift" option where at the cart or product page they can enter the recipient's email and shipping address + a note. Then tag the order when it's created so you can organize them, and have your fulfillment service ship those tagged orders to the recipient in the order notes.
There may be an app for something like this, sounds reasonable but if not or you want a custom solution hit up my team at speedboostr.com/contact. We love building custom features.