Um endereço de e-mail é um pedaço de texto. Portanto, não use binário , use texto.
Utf8 parece ser uma boa escolha. Não tenho certeza de quais caracteres são suportados para endereços de e-mail, mas pode-se esperar que cada vez mais caracteres Unicode serão permitidos no futuro. Especialmente se você usa utf8 em outro lugar em seu banco de dados, você não precisa mudar de uma codificação para outra, apenas use utf8 para tudo.
Quanto à escolha entre utf8_bin , utf8_unicode_ci e utf8_general_ci , a diferença é apenas o agrupamento. Isso significa que faz diferença ao comparar as strings.
Agora aqui você tem que escolher entre o que é permitido e o que é normal. Normalmente, os endereços de e-mail não diferenciam maiúsculas de minúsculas, mas podem fazer distinção entre maiúsculas e minúsculas.
Portanto, se você usa um índice exclusivo em sua coluna de e-mail e deseja permitir endereços de e-mail que diferem apenas em letras maiúsculas, use utf8_bin , já que os agrupamentos que terminam com _ci significam "não diferencia maiúsculas de minúsculas".
Se você usa um índice exclusivo e deseja evitar que os e-mails sejam diferentes apenas na capitalização, use utf8_unicode_ci .
Dito isso, eu uso utf8_unicode_ci . Quero que o banco de dados seja capaz de reconhecer [email protected] e [email protected] como o mesmo endereço. É muito mais útil do que permitir a possibilidade de endereços com os mesmos caracteres e letras maiúsculas diferentes.