Formulário no e-mail

Bom dia,

Tenho uma aplicação onde é enviado automaticamente boletins em formato pdf, o pessoal da empresa estão querendo muda esse processo, estão querendo que seja enviado um link para uma JSP dentro da aplicação e nela eu gravo algumas informações no banco e visualizo o relatório, só que eles não querem que seja mostrado os parametros no link, então pensei em enviar um formulário no corpo do email contendo o link em um <input type=“submit”> e os parametros em um <input type=“hidden”>

mas qdo eu clico no link no email ele não pega os parametros !!!

String vs_nome = (String)request.getParameter("vs_nome");

eles vem nulos !!!

alguém sabe se é possivel fazer isso ? ou algum outro método para resolver este problema ?

desde já agradeço !!!

Seu sistema é web ou desktop ?

Quais parametros vc precisa esconder ?

Esses parametros só virão preenchidos se você der um submit no form, clicando em um link isso não ocorre.

mailtext+= " &lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt; ";
mailtext+= " &lt;form action='http://10.0.88.44:8088/sic/relatorios/relatorio.jsp' method='post'&gt; ";
mailtext+= " <font face='Times, Helvetica, sans-serif' size='3'> "; 
mailtext+= " 	Boletim de Consumo de Combustivel na data " + dt_atual;
mailtext+= "		<br><br>";
mailtext+= " 	Unidade: " + rs_jpdw_empresa.getString("nome_empresa") + "<br>";
mailtext+= "    &lt;input type='hidden' name='vs_nome' value='abc'&gt; ";
mailtext+= "    &lt;input type='submit' value='Visualizar Relatório'&gt;</font>";
mailtext+= "<br><br><br>";
mailtext+= " &lt;/form&gt;&lt;/body&gt;&lt;/html&gt;";

este é o formulário que é enviado no corpo do email … o usuário clica sim no submit do formulário … só que nesta “relatorio.jsp” eu pego o parametro e dou um print nele … o conteudo é nulo !!!
Pesquisando na web achei essa solução … mas não sei pq q não esta dando certo !!!
este parametro q estou passando agora é só para teste … terei que passar mais alguns referentes ao relatório que será visualizado !!!

é um sistema web … mais são classes java que fazem a parte de envio automatico !!!

Alguém tem alguma dica !?

Pera lá.
Você quer mandar um email que tem um formulário para ser preenchido?
No meu tempo isso até funcionava, mas hoje em dia não funciona mais (os programas de email que mostram HTML desabilitam javascript e submit).
O que se deve fazer é, no email, mandar um link para uma página que contém o tal formulário.

mais então cara … o meu problema é mais grave !!!

nesta tal pagina … eu apenas vou exibir um relatório … só que eu preciso gravar algumas informações no banco referentes a este relatório que será exibido … e eu só tenho elas na classe que vai gerar e mandar o email !!!
Então preciso de alguma forma, embutir essas informações no email para que assim q ele clique para visualizar o relatório seja gravado as informações ! e um agravante nisso é que eu não posso dexar a mostra pro usuário os parametros, nem na URL e nem na barra de status do navegador !!!

Eu pensei em mandar um formulario no corpo do email … justamente para esconder os parametros !!!

No way. Normalmente quando você lê um email HTML, não dá absolutamente nenhum retorno (a menos, é claro, que o leitor de email autorize que as figuras sejam baixadas junto com o email HTML).
Uma coisa que já vi é criar um servlet que cria uma figura (como um logotipo) e onde você pode passar os parâmetros na URL. O grande problema, é claro, é que nem sempre o leitor de email autoriza a baixar as figuras.

Outra possibilidade é criar uma tabela com dois campos: chave e os parâmetros.

Ao enviar o email, cria uma chave Random, algo como 3245A542EC43B324D4E634F235 e guarda os parametros verdadeiros na tabela com essa chave.
Para o utilizador envia um link com a chave: http://somehost/somepage.jsp?id=3245A542EC43B324D4E634F235

Esse link ia à tabela ler os parâmetros e apresentava o relatório correcto.

É isso aí, PMLM.
É exatamente a idéia daqueles emails de “confirmação de cadastramento” que você vê por aí.

boa idéia !!!

Vou testar essa possibilidade … creio q vai resolve meu problema !!!

Só uma perguntinha … tem algum método pra mim gera esse código ?!

Se seu banco tiver um campo “UUID” ou “GUID” (que é um campo automaticamente gerado , semelhante aos campos “auto-increment” ou “sequence” que existem em quase todos os bancos), você pode usar o valor desse campo.

Senão, pegue o valor do campo auto-increment, combine com uma palavra fixa, e calcule o hash (MD5 por exemplo). Por exemplo, digamos que seu campo auto-increment tenha para um determinado registro o valor 45. Você pode combinar “45” com uma palavra fixa (digamos “andre.hebeler.”) e então calcular o MD5. (Só procurar aqui no GUJ que existem rotinas prontas).

Por exemplo:
45 -> MD5 (“andre.hebeler.45”) = “8DE863F91E120F13E8BCA7BCD847DE97”
46 -> MD5 (“andre.hebeler.46”) = “609635CD5C658CB7B6FF257E91C92796”
e assim por diante. (Eu realmente calculei o MD5 dessas duas strings, então você pode usá-las como referência.)

E então você põe esse campo como chave dessa tabela que contém os parâmetros.

(Por que é que não aconselho usar diretamente a chave auto-increment? Por razões de segurança - se o cara ficar tentando os valores “44”, “45”, “46” etc. pode ser que ele consiga acessar algo que não deva.)

Exactamente. Se o id fosse algo sequencial, muito facilmente alguém ia experimentando ids e vendo outros relatórios.