É possivel? Montar email baseado em dados do banco de dados? (jstl, jsf..oracle)

Ola pessoal, blz ?

Gostaria de saber se voces tem alguma ideia ou exemplo do seguinte esquema:

Tenho um banco de dados (oracle) com alguns dados cadastrados(peças).

Existe como, eu criar uma tela onde voce vai escolhendo alguns produtos e ele monte uma pagina HTML com estes produtos para ser enviada por email?

Obrigado pela ajuda

Não sei por que é que eu sempre acho que é para responder “É possível…” com uma resposta simples e direta:

SIM.

É porque basta pegar e pôr a mão na massa, não há nada impossível ou difícil de fazer no seu caso.

De qualquer maneira, a pergunta que você deveria fazer é um pouco diferente. Você está perguntando se existe alguma coisa pronta que faça isso, não?

Cara,

“…É possivel” é uma frase para chamar atencao…pensei q entenderia…

Mas respondendo sua pergunta: nao quero nada pronto…

valeu !!

Bom, se quiser fazer isso, parece ser bem simples.
Dica 1: provavelmente você terá de aprender a usar o Commons-Email ( http://commons.apache.org/email/ ) se quiser mandar emails formatados em HTML (acredito que 99,95% dos emails precisam ser formatados em HTML, até porque você provavelmente vai querer mostrar uma tabela). É que um email simples sem figuras é fácil de fazer sem o Commons, mas se você ainda por cima tiver de anexar figuras, o caso “muda de figura” (ha ha, sempre quis fazer esse trocadilho, consegui!). Eu já tive de usar o Javamail puro com imagens anexadas, e acredite, foi extremamente complicado. Não invente, use o Commons-Email.
Dica 2: como o email vai ser mandado a partir de uma aplicação Web, você precisa ver se o provedor de Internet já deixou uma caixa postal para você poder mandar seus emails. Se for mandar com uma conta do GMail ou do Yahoo, no entanto, precisará olhar aqui no GUJ as configurações adequadas, que são meio chatas nesses dois casos, porque são fora do padrão. (Parece que dá para usar o Hotmail também para mandar emails, mas não sei se há algum segredo esquisito que você tenha de saber).
Dica 3: Escolher produtos em uma lista, em uma página web, é bem simples. Basta você ver como é que as pessoas costumam fazer em outros sites, e ver se dá para fazer parecido. Dependendo do que você escolher, pode realmente ser bem simples, ou então pode ser bastante complicado. Veja o que já existe pronto no seu toolkit JSF (por exemplo, o que existe pronto no RichFaces).

Ah…valeu pela dica,

Entao, ja tenho um provedor definido, com as configuracoes proprias

No caso, é mais a parte de selecionar e depois gerar o html para ser enviado mesmo…

Mas brigadao pelas observações…

abraç

Bom dia fabio, vc pode fazer o seguinte:
1: lista os produtos em um table e pode colocar um checkbox para saber quais os produtos vc quer que apareça no email. (vc pode criar uma classe wrapper que tenha a peça e que tenha valor boleano de acordo com o checkbox)
2: faz um método no bean tipo, montar email.
3: faz uma variavel string para montar o email com os htmls e tudo mais e depois ou voce pode mostrar para o usuario confirmar ou então vc pode já criar o email e mandar.
entendeu?

rjbcordeiro, bom cara?

Achei muito boa sua ideia, vc tem algum exemplo parecido(nao quero nada pronto), só algo que de a ideia, para mim desenvolver a logica…

Brigadao…

Não seria o caso de usar o velocity ?

Pessoa, alguem conseguiu resolver isto?
Tambem estou correndo atras de algo parecido

vc esta fazendo em java web? java desktop? java mobile?
java web, vc pode usar os componentes do jsf.
Bom preciso de mais detalhes sobre o que vc esta tentando fazer.

1- cria uma classe wrapper para te ajudar e ela pode ter os atributos , ItemEmail Item item e boolean isSelecionado
2- no bean cria um método para fazer uma consulta de todos os itens do banco e colocar em uma lista de item com os isSelecionado todos como false.
3- na view tu vai criar um h:datatable com o nome do item e com o h:onecheck… e vai setar a propriedade para o isSelecionado
4- no final coloca um botao com o label - criar email e verifica se tem pelo menos 1 check marcado ( um item marcado)
5- no bean tu cria um evento criarEmailItensSelecionados e vc faz um laço para saber quais selects estão marcados
6- vc pode criar uma variavel em string para montar o email propriamente dito com tags htmls e tudo ( formatar o email)
7- ou vc pode mostrar ao usuario como ficou o email pronto ( recomendado ) dando a opção e marcar mais ou tirar, ou vc manda o email já para o usuario ( tem que ter o email valido)
8- vc pode utilizar a classe javax.mail para enviar o email, só precisa configurar smtp, from e autenticar o usuario a propria classe tem método para isto.
9- se tudo tiver ok vc envia com o método Transport.send() da classe.

Ola rjbCordeiro,

Sim, é para web, uso jsf, vou dar uma estudade na dica que disse. Voce nao tem nenhum exemplo parecido ?(nao quero codigo pronto, é algo para mim estudar mesmo)

valeu ?!!

Blz, vou tentar da uma dica melhor
1 - criar a classe wrapper:

//algo assim


public class ItemWrapper{

   private Item item; // seu item do banco
   private boolean mostrarNoEmail;  // este cara aqui vai te ajudar na hora do usuario escolher quais itens quer mostra no email


}

2- no bean

//este aqui é o tem bean

//este método vai fazer que vc recupere do banco os itens e que vc monte uma lista de itemwrapper
public void montarArrayItem(){
    List<Item> arrayItem = métodoQueListaItemDoBanco;
    //esta lista aqui tem que ser um atributo do bean para poder depois pegar os itens selecionados ai vc coloca get e set e tals...
    List<ItemWrapper> itensWrapper = new ArrayList<ItemWrapper>();
    for(Item item : arrayItem){
         ItemWrapper iw = new ItemWrapper(item , false); // no inicio todos os itemwrapper tem que ser falso , pois o cliente ainda não escolheu
         itensWrapper.add(iw);
    }
    //agora vc montou sua lista de itens wrapper
}

3- na view

bom aqui vc vai criar um datatable com a lista de itenswrapper e vc vai colocar o nome do item e o checkbox que vai ser o valor true ou false;


<h:dataTable value="#{bean.listaItemWrapper}" var="row">
      <h:column>
      <h:selectBooleanCheckboxt value="#{row.mostrarNoEmail}"
     </h:column>

 <h:column>
      <h:outputText value="#{row.item.descricao}"
     </h:column>

</h:dataTable>
   <h:commandButton action="#{bean.metodoMostrarEmailPronto}" />

aqui vc vai no método do bean e vai verificar quais itens estao marcados e criar o html propriamente dito e depois mostrar em um modalPanel ( rich:faces )


public void mostrarEmail(){
      String email = ""; //seria bom usar StringBuffer, mas como é só um exemplo... vc pode criar um arquivo de propriedade com o corpo do email pronto e criar textos a serem substituidos tipo {itensAqui}<br/>
      // assim vc vai poder dar um replace onde tiver {itensAqui}
      email = properties.corpoEmail;
       String itensFormatados = "";
      for(ItemWrapper iw : this.itensWrapper){
            if(iw.isMostrarEmail){
                 itensFormatados += "Nome item " + iw.getItem.getDescricao + "<br/>";
            }

      }
     
email = email.replace("{itensAqui}" , itensFormatados); // aqui vc vai ter uma string com o html do email e agora é só mostrar para o usuario se é isto que ele quer
}

7- vc pode colocar dois botoes, tipo enviar email e cancelar
o enviar email vai enviar e o cancelar volta para a lista de itens para o usuario selecionar novamente

tem um exemplo aqui sobre enviar email
Tutorial: Enviando emails com Java pelo Paulo Silveira
http://www.guj.com.br/content/articles/email/Spammer.txt

bom acho que com isto seus problemas acabaram ehehehe
mas qualquer dúvida posta ai.

rjbcordeiro ,

Cara valeu mesmo, ja estou estudando e montando a aplicação

Valeu mesmo,

abs

Da pra fazer isso somente com MVC?

E ae cara, blz?

Mandei um email com relacao ao codigo.

valew !!

[quote=fabio silveira]rjbcordeiro ,

Cara valeu mesmo, ja estou estudando e montando a aplicação

Valeu mesmo,

abs[/quote]