Collision itself is not very interesting for an attacker, in fact a random email that matches the hash is not useful, an attacker would like to forge a specific document and pass an integrity check
For real life use we need to associate a name with a key, otherwise we would need a secure channel for exchange public keys, otherwise everyone would be able to forge a public key and pretend to be the sender. Another instance of the problem is the ability of verifying that the website we are connecting to is the real one.
An authority (CA) digitally signs files called digital certificates to bind an identity to a public key. es: X.509 is a format for pk certificates. A certificate contains informations in the identity and the public key and is signed (hashed and encrypted) by the CA. This introduces a problem of trust, who trusts the CA? We need a Top-level CA (root CA, source CA), that uses a self-signed certificate to say "I am myself" Then we can make a chain, or rather a tree of CA trust, where the trusted element is the root CA
A way of decentralizing trust is the web of trust There is a whole research field about "What you see is what you sign"
Usually some of the three measures are combined, example: two factor authentication