Primeiramente gostaria de agradecer a atenção de todos, tenho um programa que criei em java no netbeans para controle de estoque, criei a classe para envio de e-mail, esta funcionando normal, mas necessito enviar no e-mail o status do estoque, basicamente é a substituição dos dados informados como assunto no e-mail por uma variavel contendo a pesquisa no banco dos materiais abaixo da media.
Pensei em 2 opções
1= realizar a pesquisa no banco e simplesmente atribuir o resultado a uma variavel string e inserir a mesma como assunto do e-mail. (Sem sucesso)
2=realizar a pesquisa no banco e gerar um relatorio por meio do jaspersoft com os resultados , mas seria necessario as linhas de codigo para realizar a pesquisa, compilar o relatorio, gerar o relatorio em .PDF indicando um caminho para armazenamento, e modificar o envio do e-mail para inserir o anexo enviando-o. (Sem sucesso)
Peço a ajuda de vocês por meio de exemplos , sou iniciante em programação.
Pelas informações que você passou, isso não é mais um trabalho de iniciante. Então não se dê mais esse título.
Porquê não teve sucesso? Esse caminho não é tão difícil, mostra o que você fez.
Em qualquer escolha, você teria que fazer linhas de código, e por mais que pareça que seriam N linhas de código, essa escolha não haveria tanto “esforço”, se você já sabe gerar um relatório, você só teria o trabalho de salvar como .PDF.
Enfim, resumindo, você já fez algo? Se sim, mande-nos.
@rodriguesabner Muito obrigado pelos conselhos, minha vontade era de enviar o anexo gerado pelo jaspersoft no e-mail o codigo abaixo descreve a classe para envio do e-mail,
public void enviarEmail(){
Properties props = new Properties();
/** Parâmetros de conexão com servidor Outlook */
props.put(“mail.smtp.auth”, “true”);
props.put(“mail.smtp.starttls.enable”, “true”);
props.put(“mail.smtp.host”, “outlook.office365.com”);
props.put(“mail.smtp.port”, “587”);
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(emaillogar, senhalogar);
}
});
/** Ativa Debug para sessão */
session.setDebug(true);
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(emaillogar)); //Remetente
Address[] toUser = InternetAddress //Destinatário(s)
.parse(EmailCopia1);
message.setRecipients(Message.RecipientType.TO, toUser);
message.setSubject("Enviando email de teste");//Assunto
message.setText(EmailStatusEstoque);
/**Método para enviar a mensagem criada*/
Transport.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
Este é o código para gerar o relatório;
public void RelatorioEnviar(){
ModuloConex con = new ModuloConex();
con.conectar();
String sql = “SELECT * FROM tbepi WHERE quantepi < quantmedepi AND quantepi <= quntminepi”;
try {
pst = con.criaPS(sql);
rs = pst.executeQuery();
JRResultSetDataSource rrs = new JRResultSetDataSource(rs);
String caminho = new File("modeloRel.jrxml").getAbsolutePath();
//Preenche o Jasper e gera o arquivo.jrprint
JasperPrint remat = JasperFillManager.fillReport("modeloRel.jasper",new HashMap(),rrs);
JasperCompileManager.compileReportToFile(caminho);
JasperExportManager.exportReportToPdfFile("modeloRel.jasper");
con.desconectar();
}catch (Exception e) {
JOptionPane.showMessageDialog(null,"Não foi possível acessar os dados solicitados \n" +
e.getLocalizedMessage());
}
@rodriguesabner Utilizo para emitir outros relatórios e funciona bem, no código abaixo mostra um que utilizo para emitir o status geral do estoque.
private void subM9ActionPerformed(java.awt.event.ActionEvent evt) {
// Emitir relatório de Status do estoque
PreparedStatement pst = null;
Statement st = null;
ResultSet rs = null;
// Exibindo relatorio de epi
int resMAT = JOptionPane.showConfirmDialog(null, “Precione SIM para gerar o relatório de Status do estoque em baixa quantidade \n Ou não para cancelar”, “Atenção”,JOptionPane.YES_NO_OPTION);
// Gerando relatório utilizando o framework JasperReports
if (resMAT == JOptionPane.YES_OPTION) {
ModuloConex con = new ModuloConex();
con.conectar();
String sql = “SELECT * FROM tbepi WHERE quantepi < quantmedepi AND quantepi <= quntminepi”;
st = con.criaSTT();
// Utilizando a classe Jasperprint
try {
pst = con.criaPS(sql);
rs = pst.executeQuery();
JRResultSetDataSource rrs = new JRResultSetDataSource(rs);
JasperPrint remat = JasperFillManager.fillReport("ModelEstoque.jasper",new HashMap(),rrs);
//JasperViewer jv = new JasperViewer(remat);
//jv.setVisible(true);
JasperViewer.viewReport(remat,false);
con.desconectar();
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Não foi possível acessar os dados solicitados \n" +
e.getLocalizedMessage());
}
}
}
A diferença é que para envia-lo por e-mail preciso das linha de código funcionais para que ele seja compilado , gere o arquivo pdf e armazene-o em um caminho tudo por via código, no exemplo acima ele gera o relatorio mas o usuario que deve salva-lo em algum caminho no formato escolhido.