• Your query just needed aliases. 
    A fixed version, along with an alternative which may perform better (you should test, of course)

    SELECT * FROM #tblContacts c
    JOIN #tblEmails e ON c.ContactID = e.ContactID
    WHERE e.EmailAddress NOT IN (SELECT EmailAddress FROM #tblNoEmail)

    SELECT * FROM #tblContacts c
    JOIN #tblEmails e ON c.ContactID = e.ContactID
    WHERE NOT EXISTS (SELECT 1 FROM #tblNoEmail ne WHERE ne.EmailAddress = e.EmailAddress)

    If you haven't even tried to resolve your issue, please don't expect the hard-working volunteers here to waste their time providing links to answers which you could easily have found yourself.