Bom dia galera, poderia me ajudar por favor estou tentando solucionar esse codigo faz 2 semana, muitas pessoas me ajudaram mais sempre da erro, estou fazendo algo de errado tenho certeza, eu tenho um codigo que busca todos os anexo dentro de um email, ele traz todos os anexos mais os anexo que estão com o nome que usa caracter especial ele da erro, como eu tiro esse caracter.
protected final Variant urimsalvarAnexoemail( Variant messageVar, Variant Caminho) throws Exception {
String teste = Caminho.getString();
// Verifica se a mensagem passada como parâmetro é um objeto Message
Object messageObj = messageVar.getObject();
if (!(messageObj instanceof javax.mail.Message)) {
return Variant.VARIANT_NULL;
}
javax.mail.Message message = (javax.mail.Message) messageObj;
String tipoDeConteudo = message.getContentType();
if (!tipoDeConteudo.contains("multipart")) {
return Variant.VARIANT_NULL; // não há anexos
}
javax.mail.Multipart conteudo = (javax.mail.Multipart) message.getContent();
int partes = conteudo.getCount();
for (int i = 0; i < partes; i++) { // iterar as partes e extrair os anexos
javax.mail.Part parte = conteudo.getBodyPart(i);
if (!parte.ATTACHMENT.equalsIgnoreCase(parte.getDisposition())) {
continue; // essa parte não é um anexo
}
String nomeDoArquivo = parte.getFileName();
//nomeDoArquivo=Functions.translateAcentos();
teste = teste += nomeDoArquivo;
InputStream entrada = parte.getInputStream(); // esse é o anexo do email
OutputStream saida = new FileOutputStream(teste); // esse é o arquivo em disco
// copiar os bytes da entrada para a saida
byte[] bytes = new byte[8192]; // buffer de 8KB
for (int lidos = -1; (lidos = entrada.read(bytes)) != -1; saida.write(bytes, 0, lidos)) { /* for sem corpo mesmo */ }
saida.flush();
saida.close();
}
return VariantPool.get(teste);
}