Olá!
Tenho esta sugestão de como fazer isso, no corpo da newsletter que a pessoa recebe vc coloca o link completo para a página que faz o descadastramento no site mais o email da pessoa, algo assim:
Lá no final do corpo do email:
html.append("Para descadastramento da Newsletter, clique aqui: <br> "+ "http://www.seusite.com.br/descadastra?email=" + contato.getEmail() +"</body></html>");
O link do site precisa ser clicável, aí é só usar html para fazer isso. Coloquei sem para vc ver como fica, desse jeito ai o site estará no corpo mas não será clicável, ou vc pode deixar assim mesmo e embaixo dizer “copie e cole no navegador”.
Repare que descadastra deve ser um método no seu Controller (IndexController por exemplo) ou servlet que vai receber o email da pessoa (do tipo String) por parâmetro, dentro do método vc descadastra o email da pessoa, aí na sequência é só redirecionar a pessoa para uma tela de confirmação. Outra forma de fazer seria gerando uma numeração única ao cadastrar a pessoa na newsletter, esta numeração deve ser salva no banco, ai ao invés de vc mandar o email da pessoa no link do código, vc coloca a uid:
html.append("Para descadastramento da Newsletter, clique aqui: <br> "+ "http://www.seusite.com.br/descadastra?uid=" + contato.getUid() +"</body></html>");
O método vai receber essa numeração e vai descadastrar a pessoa. Se quiser fazer assim pesquise sobre a classe UUID.
Deve ter outras formas de fazer tb. =)
[]s