You can't verify an email by any means other than to send an email to it and get a response back. (And all that does is check that the email address exists at that moment in time: some are time limited and automatically expire after ten minutes for example).
What I (and many others) do is send an email, with a "complete registration" link to a webpage. The link includes a query string which identifies the originator. For example, a Guid value which ties back to a guid in your "waiting completion" table in your db:
Or include the userID in the query string:
In the web page, you read the query string, check the user and Guid and mark it as confirmed.