Pra ti enviar por e-mail com anexo e usando password, segue o exemplo:
//pode testar com host do outlook : smtp-mail.outlook.comStringhost="smtp.gmail.com",user="email para autenticacao",password="senha do email";intport=25;Propertiesprops=newProperties();props.put("mail.smtp.host",host);props.put("mail.smtp.port",port);//se for testar local tem que abrir essa porta no firewallprops.put("mail.debug","true");props.put("mail.smtp.password",password);props.put("mail.smtp.auth","true");props.put("mail.smtp.starttls.enable","true");//props.put("mail.smtp.EnableSSL.enable", "true"); caso o servidor de email queira o protocolo de criptografia SSL descomente esse e comente o de cima que TTLAuthenticatorauth=newAuthenticator(){// override the getPasswordAuthentication methodprotectedPasswordAuthenticationgetPasswordAuthentication(){returnnewPasswordAuthentication(user,password);}};Sessionsession=Session.getInstance(props,auth);MimeMessagemessage=newMimeMessage(session);message.setFrom(newInternetAddress("email de envio"));message.setRecipient(RecipientType.TO,newInternetAddress("email de destino"));message.setSubject("E-mail com anexo");message.setText("arquivo pdf anexado!","UTF-8");// as "text/plain"message.setSentDate(newDate(System.currentTimeMillis()));//anexando arquivo --------------------MimeBodyPartmessageBodyPart2=newMimeBodyPart();Stringfilename="F:\\CAMINHO_DO_ARQUIVO\\VS-vs-SO.pdf";//change accordingly DataSourcesource=newFileDataSource(filename);messageBodyPart2.setDataHandler(newDataHandler(source));messageBodyPart2.setFileName(filename);Multipartmultipart=newMimeMultipart();multipart.addBodyPart(messageBodyPart2);message.setContent(multipart);//--------------------------Transporttransport=session.getTransport("smtp");transport.connect(host,port,user,password);transport.send(message);transport.close();System.out.println("e-mail enviado com sucesso");
se estiver usando o maven use essa dependencia para enviar o email
Aqui vc pos fixo. Mas o arquivo tem que ser gravado temporário. Como faço isso ?
J
jacoboliveira1 like
Para ser temporário vc deve enviar e depois excluir o arquivo, pesquise sobre como remover um arquivo
G
guilhermebhte
O seu exemplo, entendo que é maquina windows. mas se for maquina linux ?
Vi que tem isso abaixo, mas não consegui progredir File fileTemprario = File.createTempFile(“xlsx”, “xlsx”);,
e para deletar fileTemprario.deleteOnExit();
J
jacoboliveira
Cara eu vi esse exemplo aqui
Stringprefix="exampleTempFile";Stringsuffix=".txt";//Creating a temp filePathtempFilePath=Files.createTempFile(prefix,suffix);//o caminho ta aqui ele independe de OSSystem.out.println("Temp file created: "+tempFilePath.toString());//Deleting the fileFiles.deleteIfExists(tempFilePath);
Dai vc pega o path e faz o que quiser pra deleta esta ai tambem vc coloca depois de enviado o arquivo por email