Olá, criei um programa no NetBenas para enviar e-mail com arquivos em anexo.
Está em anexo o projedo, quero compartilhar com todos com a intenção de melhora-lo.
Se alguém tem uma idéia de como listar os anexos selecionados posta aí.
Para quem for executar, basta descompactar e abrir o projeto com o netbeans, depois acessar a clase EnviarEmail.java e configurar as informações do emitente.
configurações: servidor smtp, porta smtp, email do emitente, nome do emitente, nome de usuário e senha.
Características do programa:
Uso de expressões regulares para validação de emails
Pedido de confirmação para o fim da execução do programa
/** * */packageprincipal;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.sql.Connection;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Properties;importjavax.activation.DataHandler;importjavax.activation.FileDataSource;importjavax.mail.Authenticator;importjavax.mail.Message;importjavax.mail.PasswordAuthentication;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeBodyPart;importjavax.mail.internet.MimeMessage;importjavax.mail.internet.MimeMultipart;importmanutencoes.ManutencaoTabela;importbancodados.BancoDados;importbancodados.ConexaoPadrao;importbeans.*;/** * @author prsantos * */publicclassEnviar{privatebooleanbolAutenticacaoServidor;privateStringstrServidorSMTP;privateStringstrPortaServidorSMTP;privateStringstrUsuarioSMTP;privateStringstrSenhaSMTP;privateStringstrNomeRemetente;privateStringstreMailRemetente;privateStringstrNomeDestinatario;privateStringstreMailDestinatario;privateString[]streMailDestinatarioCC;privateString[]streMailDestinatarioBCC;privateFile[]fAnexos;privateStringstrAssunto;privateStringBuffersbMensagem;privatebooleanbolAvisoRecebimento;privateStringstrTipoMensagem;publicEnviar(finalbooleanbolAutenticacaoServidor,finalStringstrServidorSMTP,finalStringstrPortaServidorSMTP,finalStringstrUsuarioSMTP,finalStringstrSenhaSMTP,finalStringstrNomeRemetente,finalStringstreMailRemetente,finalStringstrNomeDestinatario,finalStringstreMailDestinatario,finalString[]streMailDestinatarioCC,finalString[]streMailDestinatarioBCC,finalFile[]fAnexos,finalStringstrAssunto,finalStringBuffersbMensagem,finalbooleanbolAvisoRecebimento,finalStringstrTipoMensagem){booleandeuErro=false;Stringmensagem="";// if (strServidorSMTP == null || strServidorSMTP.trim().length() == 0) // { mensagem = mensagem + "Faltou especificar servidor SMTP" + '\n';// deuErro= true;// }// if (strUsuarioSMTP == null || strUsuarioSMTP.trim().length() == 0) // { mensagem = mensagem + "Faltou especificar o usuario" + '\n';// deuErro= true;// }if(deuErro){// Efetuar log}else{this.bolAutenticacaoServidor=bolAutenticacaoServidor;this.strServidorSMTP=strServidorSMTP;this.strPortaServidorSMTP=strPortaServidorSMTP;this.strUsuarioSMTP=strUsuarioSMTP;this.strSenhaSMTP=strSenhaSMTP;this.strNomeRemetente=strNomeRemetente;this.streMailRemetente=streMailRemetente;this.strNomeDestinatario=strNomeDestinatario;this.streMailDestinatario=streMailDestinatario;this.streMailDestinatarioCC=streMailDestinatarioCC;this.streMailDestinatarioBCC=streMailDestinatarioBCC;this.fAnexos=fAnexos;this.strAssunto=strAssunto;this.sbMensagem=sbMensagem;this.bolAvisoRecebimento=bolAvisoRecebimento;this.strTipoMensagem=strTipoMensagem;this.envia();}}privatevoidenvia(){try{//Configura algumas propriedades e pega a seção padrãoPropertiesprops=newProperties();props.put("mail.transport.protocol","smtp");props.put("mail.smtp.host",this.strServidorSMTP);props.put("mail.smtp.auth",this.bolAutenticacaoServidor);props.put("mail.smtp.starttls.enable",true);props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");props.put("mail.smtp.port",this.strPortaServidorSMTP);Sessionsession;if(this.bolAutenticacaoServidor){session=Session.getDefaultInstance(props,newAuthenticator(){publicPasswordAuthenticationgetPasswordAuthentication(){//Dados de acesso ao email do remetente returnnewPasswordAuthentication(strUsuarioSMTP,strSenhaSMTP);}});}else{session=Session.getDefaultInstance(props,null);};session.setDebug(false);//Cria MensagemMimeMessagemsg=newMimeMessage(session);//Define o endereço do remetente (DE / FROM)msg.setFrom(newInternetAddress(this.streMailRemetente,strNomeRemetente));//Define o endereço do destinatário (PARA / TO)msg.setRecipient(Message.RecipientType.TO,newInternetAddress(streMailDestinatario,strNomeDestinatario));//Define os endereços dos destinatário (Com Cópias / CC)if(this.streMailDestinatarioCC.length>0){InternetAddress[]iaEmailDestinatarioCC=newInternetAddress[streMailDestinatarioCC.length];for(inti=0;i<streMailDestinatarioCC.length;i++){iaEmailDestinatarioCC[i]=newInternetAddress(streMailDestinatarioCC[i]);}msg.setRecipients(Message.RecipientType.CC,iaEmailDestinatarioCC);}else{//}//Define os endereços dos destinatário (Com Cópias / BCC)if(this.streMailDestinatarioBCC.length>0){InternetAddress[]iaEmailDestinatarioBCC=newInternetAddress[streMailDestinatarioBCC.length];for(inti=0;i<streMailDestinatarioBCC.length;i++){iaEmailDestinatarioBCC[i]=newInternetAddress(streMailDestinatarioBCC[i]);}msg.setRecipients(Message.RecipientType.BCC,iaEmailDestinatarioBCC);}else{//}//Define o assuntomsg.setSubject(this.strAssunto);//Aviso de Recebimentoif(bolAvisoRecebimento){msg.addHeaderLine("ReturnReceipt");msg.setHeader("ReturnReceipt","1");msg.addHeaderLine("Disposition-Notification-To");msg.setHeader("Disposition-Notification-To",strNomeRemetente);}//Define datamsg.setSentDate(newDate());//Cria e preenche a primeira parte da mensagemMimeBodyPartmbpCorpoMensagem=newMimeBodyPart();//Mensagemif(this.strTipoMensagem.equals("T")){//Se for TEXTOStringBuffersbMensagem=newStringBuffer();sbMensagem.append("Erroenviandoe-mailpara");sbMensagem.append(streMailDestinatario+"/"+strNomeDestinatario);mbpCorpoMensagem.setText(sbMensagem.toString());}else{//Se for HTMLmbpCorpoMensagem.setContent(readFileAsString("G:\\EmailMargting-PRSantos\\index.html"),"text/html");}//Cria MultiParteMimeMultipartmmpMultiParte=newMimeMultipart();//mmpMultiParte.addBodyPart(mbpCorpoMensagem);msg.setContent(mmpMultiParte);if(this.fAnexos.length>0){for(inti=0;i<this.fAnexos.length;i++){if(!this.fAnexos[i].isDirectory()){//Anexa arquivo//Cria e preenche a segunda parte da mensagemMimeBodyPartmbpAnexos=newMimeBodyPart();FileDataSourcefdsArquivoAnexo=newFileDataSource(fAnexos[i].toString());DataHandlerdhArquivoAnexo=newDataHandler(fdsArquivoAnexo);mbpAnexos.setDataHandler(dhArquivoAnexo);mbpAnexos.setFileName(fdsArquivoAnexo.getName());mmpMultiParte.addBodyPart(mbpAnexos);msg.setContent(mmpMultiParte);//Implementa corpo da mensagemMimeBodyPartmbpCorpoMensagem2=newMimeBodyPart();mbpCorpoMensagem2.setText(fdsArquivoAnexo.getName());mmpMultiParte.addBodyPart(mbpCorpoMensagem2);msg.setContent(mmpMultiParte);System.out.println("LocaldoArquivoaenviar-"+fdsArquivoAnexo.getFile());mbpCorpoMensagem2=null;dhArquivoAnexo=null;fdsArquivoAnexo=null;mbpAnexos=null;}}}//Envia mensagemTransport.send(msg);System.out.println("EmailEnviadocomsucessoas("+newSimpleDateFormat("dd/MM/yyyyHH:mm:ss").format(newDate())+")");//Atualiza e-Mail como enviado Emailscasashoppingemail=newEmailscasashopping();// Emailserro email = new Emailserro();// Emailsmarketing email = new Emailsmarketing();// Emailsmarketing email = new EmailsJoseMariaSalgado();email.setemail(streMailDestinatario);email.setEnviado(1);//estabelece conexãofinalConnectioncnn;cnn=BancoDados.fabricaConexao(newConexaoPadrao());ManutencaoTabela.AtualizaRegistro(email,cnn);}catch(Exceptionmex){mex.printStackTrace();}}/** @param filePath the name of the file to open. Not sure if it can accept URLs or just filenames. Path handling could be better, and buffer sizes are hardcoded */privatestaticStringreadFileAsString(StringfilePath)throwsjava.io.IOException{StringBufferfileData=newStringBuffer(1000);BufferedReaderreader=newBufferedReader(newFileReader(filePath));char[]buf=newchar[1024];intnumRead=0;while((numRead=reader.read(buf))!=-1){StringreadData=String.valueOf(buf,0,numRead);fileData.append(readData);buf=newchar[1024];}reader.close();returnfileData.toString();}}