(Resolvido)Remover caracter especiais da string

3 respostas
java
F

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);
}

Capturar

3 Respostas

S

Que erro?
Em que momento acontece o erro?

Você pôs em comentário o seguinte trecho de código:

nomeDoArquivo = Functions.translateAcentos();

Posta o fonte desse método translateAcentos() como ele sabe de qual String deve remover os acentos se ele não recebe nada como parâmetro?

F

Deu certo já muito obrigado pela atenção amigão vlw mesmo

F

protected final Variant UrimSalvarAnexoEmail(Variant messageVar, Variant Caminho) throws Exception {
String CaminhoCompleto = null;

// 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++) { // inteirar 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

}

CaminhoCompleto = Caminho.getString();

String nomeDoArquivo = parte.getFileName(); // nome do anexo

nomeDoArquivo = javax.mail.internet.MimeUtility.decodeText(nomeDoArquivo); // nome do anexo com a conversão de caracter

CaminhoCompleto = CaminhoCompleto += nomeDoArquivo; //junção do caminho + nome do arquivo

InputStream entrada = parte.getInputStream(); // esse é o anexo do email

OutputStream saida = new FileOutputStream(CaminhoCompleto); // 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(CaminhoCompleto);
}

Criado 5 de junho de 2018
Ultima resposta 7 de jun. de 2018
Respostas 3
Participantes 2