Olá, Paulo
Entendo sua preocupação em relação ao token e concordo que não é uma prática muito segura passá-lo no corpo da requisição. Existem duas formas comuns de enviar o token: no header ou por query.
Para enviar o token no header, você pode adicionar um cabeçalho personalizado na requisição, por exemplo:
Authorization: Bearer seu_token_aqui
Dessa forma, o token fica oculto no cabeçalho da requisição e não é visível no corpo.
Outra opção é enviar o token por query, adicionando-o na URL da requisição, por exemplo:
https://api.exemplo.com/recurso?token=seu_token_aqui
Assim, o token também não é passado no corpo da requisição.
No seu caso específico, como você está enviando o token por email, acredito que a melhor opção seja enviar o token no header da requisição. Dessa forma, você pode adicionar um cabeçalho personalizado no email, informando ao usuário que ele deve copiar e colar o token no cabeçalho da requisição.
Espero que essas dicas sejam úteis para você! Se tiver mais alguma dúvida, é só me dizer. Espero ter ajudado e bons estudos!