Bonjour,
Il faut utiliser des vrais guillemets/quotes " pour délimiter la valeur des attributs html et utiliser les entités html tel quel " ou & pour remplacer les caractères réservés dans la valeur d'un attribut ou dans le contenu d'une balise.
Essaye de modifier le code html généré comme ceci :
$link = "activation.php?id=" . urlencode($user_id) . '&e=' . urlencode($email) . '&ssl=' . urlencode($encrypted_pass);
// ...
$message .= ' <meta charset="UTF-8" />';
// ...
$message .= ' <a href="' . htmlspecialchars($link, ENT_QUOTES, 'UTF-8') . '">' . htmlspecialchars($link, ENT_QUOTES, 'UTF-8') . '</a><br />';
Vérifie que le html généré est bien correct en l'affichant dans le navigateur (echo $message) au lieu de l'envoyer par mail.
Pour l'envoi du mail, préfère si possible PHPMailer comme suggéré par @rthur.
Sinon, essaye sans l'entête "Content-Transfer-Encoding: quoted-printable", je doute que celle-ci soit utile et/ou puisse poser problème dans ton cas.