Enviar e-mail com o conteúdo do formulário ao gravar no banco

Em um exemplo utilizando VRaptor, dentro dele há um formulário (cadastro de produtos, por exemplo) que ao ser enviado, é gravado no banco

Form

Dao

public void salva(Produto produto) { Transaction tx = session.beginTransaction(); session.save(produto); tx.commit(); }

Controller

@Post @Path("/produto") public void adiciona(final Produto produto) { validator.onErrorForwardTo(this).novo(); dao.salva(produto); }

Funciona perfeitamente.
Preciso agora que este formulário, ao ser gravado no banco, seja enviado uma cópia também por e-mail.
Já tenho a Classe de envio de e-mails pronta, porém a forma que conheço é de enviar pelo action do form também, e não há como este formulário ter dois “action”.

A dúvida: É possível eu “inserir” o conteúdo da minha classe que envia o e-mail dentro da minha classe ProdutoController, por exemplo, para que no momento que seja salvo o formulário no banco seja também enviado o conteúdo dor formulário por e-mail?

Todos os dados q vc precisa enviar por email já estão no objeto Produto.

crie, na classe que enviará o teu email um método tipo:

public boolean enviarProdutoPorEmail(Produto produto, String destinatario){ // aqui dentro voce monta o conteudo do teu email utilizando o bjeto produto }

abrazz

Não sei se seria esta a melhor forma.

Acho que o ideal seria:

public void salva(Produto produto) { Transaction tx = session.beginTransaction(); session.save(produto); //NESTE MOMENTO tx.commit(); }

Pois assim ao retirar o objeto da memória, ele será ao mesmo tempo gravado no banco e enviado por e-mail.

não é mto interessante vc jogar ‘logica’ no meio de banco de dados…

DAO é só para acesso ao bd…

se quiser fazer então, faça no controller… :slight_smile:

Opa… muito bem lembrado…

Então seria:

@Post @Path("/produto") public void adiciona(final Produto produto) { validator.onErrorForwardTo(this).novo(); // NESTE MOMENTO [ :) dao.salva(produto); }

Alguma ideia?

Resolvido!

Literalmente inseri a Classe (uma chamada a ela, não a classe em si) antes do dao.salva.
Preenchi as strings com os conteúdos produto.nome, produto.descricao, etc.

Muito obrigado!

blz
abrazz