Sou aluno da ETEC Hortolandia , do curso de informatica,
e gostaria de saber com se envia relatorios por email , atraves de um botao.
pois estou desenvolvendo um sistema , e a parte de java e gerar relatorios de entrada e saida e envia-los por email.
estou ultililizando quatro clases, uma para conexao com o banco , outra chamada formulario , uma principal somente para executar
a classe formulario, e uma outra chamada usa relatorio onde criarei os get e set.
para relatórios utilize ireport.
para envio de emails utiliza java mail.
att,
M
Michael19
Então eu ja criei os relatórios iReport,
ja criei uma telinha com os botões, so falta progrmar o botão enviar relatorio por e-mail,
q eu naw sei como faz , so sei q é feito pelo java email , mas como faz eu não sei.
Peço q vcs me ajudem.
public void geraRelatorio(){
Connection conex = conecta();
try{Statementstmt=conex.createStatement();Stringsql="select * from Aluno";ResultSetrs=stmt.executeQuery(sql);JRResultSetDataSourcejrRs=newJRResultSetDataSource(rs);JasperCompileManager.compileReportToFile("relatorios/report3.jrxml","relatorios/report3.jasper");JasperFillManager.fillReportToFile("relatorios/report3.jasper",null,jrRs);JasperExportManager.exportReportToPdfFile("relatorios/report3.jrprint");JasperPrintprint=(JasperPrint)JRLoader.loadObject("relatorios/report3jrprint");JasperViewer.viewReport(print);rs.close();}catch(SQLExceptione){e.printStackTrace();}catch(JRExceptione){e.printStackTrace();}finally{try{conex.close();}catch(Exceptione){e.printStackTrace();}}
}
}
P
pedruhenrik
arruma seus 2 últimos posts:
1° insira o código dentro das tags code
2° explique qual o problema ou dúvida q vc esta tendo, só de tentar ler os códigos não entendi rsrs.
Esta é a minha clase conexao onde fiz a conexao com o banco de dados, e o metodo gerar relatorio.
publicclassConexao{privateStringservidor="com.mysql.jdbc.Driver";privateStringurlBanco="jdbc:mysql://localhost:3306/EmpresaR";privateStringusuarioBanco="root";privateStringsenhaBanco="";publicConnectionconecta(){Connectionconex=null;try{Class.forName(servidor);conex=DriverManager.getConnection(urlBanco,usuarioBanco,senhaBanco);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}returnconex;}//Este e metodo q gera o relatorio publicvoidgeraRelatorio(){Connectionconex=conecta();try{Statementstmt=conex.createStatement();Stringsql="select * from Aluno";ResultSetrs=stmt.executeQuery(sql);JRResultSetDataSourcejrRs=newJRResultSetDataSource(rs);JasperCompileManager.compileReportToFile("relatorios/report3.jrxml","relatorios/report3.jasper");JasperFillManager.fillReportToFile("relatorios/report3.jasper",null,jrRs);JasperExportManager.exportReportToPdfFile("relatorios/report3.jrprint");JasperPrintprint=(JasperPrint)JRLoader.loadObject("relatorios/report3jrprint");JasperViewer.viewReport(print);rs.close();}catch(SQLExceptione){e.printStackTrace();}catch(JRExceptione){e.printStackTrace();}finally{try{conex.close();}catch(Exceptione){e.printStackTrace();}}}}
ficou faltando o metodo enviar relatorio , q seria aplicado apos este metodo acima,
pois como ja disse , ja criei os relatorios no iReport , foi criado um arquivo fisico .pdf,
so naw sei como fazer para anexar este realtório envia-lo por e-mail q seria feito no metodo enviar relatorio.
P
pedruhenrik
nos links q eu postei tem classes prontas para enviar email com anexo.
porém eu irei precisar das seguintes biblitecas q no eclpse q eu ultilizo naw tem:
[code]import javax.mail.*;
import javax.mail.internet.*;
[code]
Eu queria tambem q voce me explicasse esse codigo pois naw entedim muito bem ,
so entedi q vou ter criar uma outra classe.
Eu queria tambem q voce me explicasse esse codigo pois naw entedim muito bem ,
so entedi q vou ter criar uma outra classe.
ai vc força a amizade, rs.
basicamente essa classe recebe alguns parametros(destinatario,emitente,nome do arquivo,hostname,etc), monta um email(monta o corpo do email, cabecalho,etc) e envia.
faz alguns testes e especifique melhor sua dúvida.
att,
M
Michael19
eu iserir o codigo na classe conexao, eo tranformei em um metodo .
segue o codigo abaixo:
publicvoidenviaEmail(){Stringto="[email removido]";Stringfrom="[email removido]";;Stringhost="gmail.com";Stringfilename="/teste.bmp";StringmsgText1="Sending a file.\n";Stringsubject="Sending a file";// create some properties and get the default SessionPropertiesprops=System.getProperties();props.put("mail.smtp.host",host);Sessionsession=Session.getInstance(props,null);try{// create a messageMimeMessagemsg=newMimeMessage(session);msg.setFrom(newInternetAddress(from));InternetAddress[]address={newInternetAddress(to)};msg.setRecipients(Message.RecipientType.TO,address);msg.setSubject(subject);// create and fill the first message partMimeBodyPartmbp1=newMimeBodyPart();mbp1.setText(msgText1);// create the second message partMimeBodyPartmbp2=newMimeBodyPart();// attach the file to the messageFileDataSourcefds=newFileDataSource(filename);mbp2.setDataHandler(newDataHandler(fds));mbp2.setFileName(fds.getName());// create the Multipart and add its parts to itMultipartmp=newMimeMultipart();mp.addBodyPart(mbp1);mp.addBodyPart(mbp2);// add the Multipart to the messagemsg.setContent(mp);// set the Date: headermsg.setSentDate(newDate());/*esta linha esta dando problema*/// send the messageTransport.send(msg);}catch(MessagingExceptionmex){mex.printStackTrace();Exceptionex=null;if((ex=mex.getNextException())!=null){ex.printStackTrace();}}}
so q esta com um problema,
M
Michael19
Aqui e o erro q aparece na linha 52 do post acima.
javax.mail.MessagingException: Could not connect to SMTP host: gmail.com, port: 25, response: 421
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1922)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at Conexao.enviaEmail(Conexao.java:161)
at Formulario.actionPerformed(Formulario.java:87)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
P
pedruhenrik
gmail tem q autenticar.
achei isso, espero q ajude:
importjava.util.List;importjava.util.Properties;importjavax.mail.Authenticator;importjavax.mail.Message;importjavax.mail.PasswordAuthentication;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeMessage;publicclassEmailImpl{privateStringmailSMTPServer;privateStringmailSMTPServerPort;/* * quando instanciar um Objeto ja sera atribuido o servidor SMTP do GMAIL e * a porta usada por ele */publicEmailImpl(){// Para o GMAILmailSMTPServer="smtp.gmail.com";mailSMTPServerPort="465";}/* * caso queira mudar o servidor e a porta, so enviar para o contrutor os * valor como string */publicEmailImpl(StringmailSMTPServer,StringmailSMTPServerPort){// Para// outro// Servidorthis.mailSMTPServer=mailSMTPServer;this.mailSMTPServerPort=mailSMTPServerPort;}publicvoidsendMail(Stringfrom,List<String>to,Stringsubject,Stringmessage){Propertiesprops=newProperties();// quem estiver utilizando um SERVIDOR PROXY descomente essa parte e// atribua as propriedades do SERVIDOR PROXY utilizado/* * props.setProperty("proxySet","true"); * props.setProperty("socksProxyHost","192.168.155.1"); // IP do * Servidor Proxy props.setProperty("socksProxyPort","1080"); // Porta * do servidor Proxy */props.put("mail.transport.protocol","smtp");// define protocolo de// envio como SMTPprops.put("mail.smtp.starttls.enable","true");props.put("mail.smtp.host",mailSMTPServer);// server SMTP do GMAILprops.put("mail.smtp.auth","true");// ativa autenticacaoprops.put("mail.smtp.user",from);// usuario ou seja, a conta que esta// enviando o email (tem que ser do// GMAIL)//props.put("mail.debug", "false");props.put("mail.smtp.port",mailSMTPServerPort);// portaprops.put("mail.smtp.socketFactory.port",mailSMTPServerPort);// mesma// porta// para// o// socketprops.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");props.put("mail.smtp.socketFactory.fallback","false");// Cria um autenticador que sera usado a seguirSimpleAuthauth=null;auth=newSimpleAuth("[emailremovido]","senha");// Session - objeto que ira realizar a conexão com o servidor/* * Como há necessidade de autenticação é criada uma autenticacao que é * responsavel por solicitar e retornar o usuário e senha para * autenticação */Sessionsession=Session.getDefaultInstance(props,auth);session.setDebug(true);// Habilita o LOG das ações executadas durante o// envio do email// Objeto que contém a mensagemMessagemsg=newMimeMessage(session);try{// Setando o destinatáriofor(Stringemail:to){msg.addRecipient(Message.RecipientType.TO,newInternetAddress(email));}// Setando a origem do emailmsg.setFrom(newInternetAddress(from));// Setando o assuntomsg.setSubject(subject);// Setando o conteúdo/corpo do emailmsg.setContent(message,"text/plain");}catch(Exceptione){System.out.println(">>Erro:CompletarMensagem");e.printStackTrace();}// Objeto encarregado de enviar os dados para o emailTransporttr;try{tr=session.getTransport("smtp");// define smtp para transporte/* * 1 - define o servidor smtp 2 - seu nome de usuario do gmail 3 - * sua senha do gmail */tr.connect(mailSMTPServer,"[emailremovido]","senha");msg.saveChanges();// don't forget this// envio da mensagemtr.sendMessage(msg,msg.getAllRecipients());tr.close();}catch(Exceptione){System.out.println(">>Erro:EnvioMensagem");e.printStackTrace();}}}// clase que retorna uma autenticacao para ser enviada e verificada pelo// servidor smtpclassSimpleAuthextendsAuthenticator{publicStringusername=null;publicStringpassword=null;publicSimpleAuth(Stringuser,Stringpwd){username=user;password=pwd;}protectedPasswordAuthenticationgetPasswordAuthentication(){returnnewPasswordAuthentication(username,password);}}