Fórum Problemas com anexo *.xml #402083
31/05/2011
0
seguinte Estou utilizando esse metodo para enviar email com anexo,
consigo enviar corretamente, apenas com um problema,
quanto tento abrir o anexo me aparece está mensagem: A página XML não pode ser exibida
Não é possível exibir a entrada XML usando a folha de estilos . Corrija o erro e clique no botão Atualizar ou tente novamente mais tarde. -------------------------------------------------------------------------------- O documento XML deve ter um elemento de nível superior. Erro ao processar o recurso 'http://webmail.isgh.org.br/service/hom... ou seja o corpo do arquivo xml não está sendo exibido.
metodo utilizado: public void enviaEmailAnexo(String arquivo){
//Endereço de SMTP para enviar o email
String smtpServer = "192.168.33.22"; String toMail = "teste@teste.org.br";
String toName = "Nome Destinatario"; String fromMail = "teste@teste.org.br";
String fromName = "Nome Remetente"; String subject = "Mensagem com arquivo anexo";
String body = "Esta mensagem contém um arquivo anexo.";
String fileToSend = arquivo; try { Properties props = new Properties();
props.setProperty("mail.transport.protocol","smtp");
props.setProperty("mail.host",smtpServer);
props.setProperty("mail.user",fromMail);
props.setProperty("mail.password",""); Session mailSession = Session.getDefaultInstance(props, null); Message msg = new MimeMessage(mailSession);
msg.setFrom( new InternetAddress(fromMail,fromName) );
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail,toName) );
msg.setSubject( subject ); // Adiciona o texto do corpo do email
MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent(body,"text/plain");
// Abre e anexa o arquivo
MimeBodyPart attachFilePart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(fileToSend);
attachFilePart.setDataHandler(new DataHandler(fds));
attachFilePart.setFileName(fds.getName()); // Monta a mensagem SMTP
Multipart mp = new MimeMultipart();
mp.addBodyPart(textPart);
mp.addBodyPart(attachFilePart);
msg.setContent(mp); Transport.send(msg); System.out.println("Email enviado..."); } catch (Exception e) {
e.printStackTrace();
}
}
a chamada do metodo:
try {
// Criando o arquivo de saida
FileWriter arquivo = new FileWriter(new File("c:/temp/arquivo.xml"));
// Imprimindo o XML no arquivo
//Format f = Format.getRawFormat();
//f.setEncoding("ISO-8859-1");
//XMLOutputter xout = new XMLOutputter(f); Email email = new Email();
email.enviaEmailAnexo(arquivo);
xout.output(documento, arquivo);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
return false;
Agradeço qualquer dica. Atenciosamente,
R. Barcelos.
Barcelos.java
Curtir tópico
+ 0Posts
01/06/2011
Davi Costa
att Davi
Gostei + 0
01/06/2011
Barcelos.java
Gostei + 0
01/06/2011
Davi Costa
alguns exemplos de código:
private String emailOrigem;
private String nomeUsuarioOrigem;
private String senhaUsuarioOrigem;
private String smtpHost;
private int smtpPort;
private Properties configuracaoEmail;
public void enviarEmail(List<String> destinatarios, String assunto, String conteudo, Map<String, InputStream> anexos) throws Exception {
configurarEmail();
validarEmail(emailOrigem);
//Foi comentado para validar somente na criação do contato para evitar o não envio dos destinatarios validos.
/*for (String destinatario : destinatarios) {
validarEmail(destinatario);
}*/
try {
// E-mail de Origem:
InternetAddress lAddressOrigem = new InternetAddress(emailOrigem, nomeUsuarioOrigem);
// E-mail(s) de Destino:
InternetAddress[] lListaAddressDestino = criarListaInternetAddress(destinatarios);
Session lSession = Session.getInstance(configuracaoEmail, null);
MimeMessage lMineMessage = new MimeMessage(lSession);
lMineMessage.setSentDate(new Date());
lMineMessage.setFrom(lAddressOrigem);
lMineMessage.addRecipients(Message.RecipientType.BCC, lListaAddressDestino);
// Assunto do e-mail:
lMineMessage.setSubject(assunto);
// add handlers for main MIME types
if (anexos == null || anexos.isEmpty()) {
// Conteúdo do e-mail:
lMineMessage.setContent(conteudo, "text/html");
} else {
MimeMultipart lMultiPartRoot = new MimeMultipart("mixed");
// Cria o BodyPart do conteúdo do e-mail:
MimeBodyPart lBodyPartCorpo = new MimeBodyPart();
lBodyPartCorpo.setContent(conteudo, "text/html");
lMultiPartRoot.addBodyPart(lBodyPartCorpo);
// Cria os BodyParts para os anexos do e-mail:
for (String nomeArquivo : anexos.keySet()) {
// Cria um arquivo temporário para o anexo:
File lArquivoTemporario = new File(anexos.get(nomeArquivo));
DataSource lFileDataSource = new FileDataSource(lArquivoTemporario);
// Cria o BodyPart do anexo:
MimeBodyPart lBodyPartAnexo = new MimeBodyPart();
lBodyPartAnexo.setDisposition(Part.ATTACHMENT);
lBodyPartAnexo.setDataHandler(new DataHandler(lFileDataSource));
lBodyPartAnexo.setFileName(nomeArquivo);
lMultiPartRoot.addBodyPart(lBodyPartAnexo);
}
lMineMessage.setContent(lMultiPartRoot);
}
lMineMessage.saveChanges();
// Conecta-se ao servidor e envia o e-mail:
Transport lTranportEnvio = lSession.getTransport("smtp");
lTranportEnvio.connect(smtpHost, smtpPort, emailOrigem, senhaUsuarioOrigem);
lTranportEnvio.sendMessage(lMineMessage, lMineMessage.getAllRecipients());
lTranportEnvio.close();
} catch (Exception pEx) {
throw new Exception("Mensagem validação", pEx);
}
}
public void configurarEmail() throws Exception {
if (configuracaoEmail == null) {
//aqui é pq guardo meus parâmetros no banco
List<Parametro> parametros = parametroService.findAll();
if (parametros == null || parametros.isEmpty()) {
throw new Exception("Mensagem validação");
}
Parametro parametro = parametros.get(0);
nomeUsuarioOrigem = parametro.getNomeUsuarioOrigem();
senhaUsuarioOrigem = parametro.getSenhaUsuarioOrigem();
emailOrigem = parametro.getEmailOrigem();
smtpHost = parametro.getSmtpHost();
smtpPort = parametro.getSmtpPort();
if (nomeUsuarioOrigem == null || emailOrigem == null || smtpHost == null) {
throw new Exception("Mensagem validação");
}
Properties lProperties = new Properties();
lProperties.put("mail.smtp.host", smtpHost);
lProperties.put("mail.smtp.port", smtpPort);
lProperties.put("mail.debug", "true");
if (senhaUsuarioOrigem != null){
lProperties.put("mail.smtp.auth", "true");
}else{
lProperties.put("mail.smtp.auth", "false");
}
if (smtpHost.equals("smtp.gmail.com")) {
lProperties.put("mail.smtp.starttls.enable", "true");
lProperties.put("mail.smtp.socketFactory.port", "465");
lProperties.put("mail.smtp.socketFactory.fallback", "false");
lProperties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
}
configuracaoEmail = lProperties;
}
}
public void validarEmail(String email) throws Exception {
if(email == null || email.isEmpty()){
throw new AptaException("E-mail não preenchido.");
}
Pattern padraoEmail = Pattern.compile("^[\\w-]+(\\.[\\w-]+)*@([\\w-]+\\.)+[a-zA-Z]{2,7}$");
Matcher ocorrencias = padraoEmail.matcher(email);
if (!ocorrencias.matches()) {
throw new Exception("O e-mail \"" + email + "\" é inválido.");
}
}
Espero que te ajude. é só adaptar para sua necessidade
att Davi
Gostei + 0
01/06/2011
Barcelos.java
Gostei + 0
01/06/2011
Davi Costa
// Conteúdo do e-mail:
lMineMessage.setContent(conteudo, "text/html");
} else {
MimeMultipart lMultiPartRoot = new MimeMultipart("mixed");
// Cria o BodyPart do conteúdo do e-mail:
MimeBodyPart lBodyPartCorpo = new MimeBodyPart();
lBodyPartCorpo.setContent(conteudo, "text/html");
lMultiPartRoot.addBodyPart(lBodyPartCorpo);
// Cria os BodyParts para os anexos do e-mail:
for (String nomeArquivo : anexos.keySet()) {
// arquivo anexo
File lArquivoTemporario = new File(anexos.get(nomeArquivo));
DataSource lFileDataSource = new FileDataSource(lArquivoTemporario);
// Cria o BodyPart do anexo:
MimeBodyPart lBodyPartAnexo = new MimeBodyPart();
lBodyPartAnexo.setDisposition(Part.ATTACHMENT);
lBodyPartAnexo.setDataHandler(new DataHandler(lFileDataSource));
lBodyPartAnexo.setFileName(nomeArquivo);
lMultiPartRoot.addBodyPart(lBodyPartAnexo);
}
lMineMessage.setContent(lMultiPartRoot);
}
Att Davi
Gostei + 0
01/06/2011
Barcelos.java
public class Email { // ENVIAR EMAIL
public void enviaEmailAnexo(String from , String to,String fileName ,String auth, String mensagem, String assunto ){
//INSTACIA A PROPRIEDADE
Properties props = new Properties();
//DADOS DO SERVIDOR
props.put("mail.debug" , "true"); //Mostrar passo-a-passo no console
props.put("mail.transport.protocol", "smtp"); //Indica que será usado SMTPS
props.put("mail.smtp.host" , "XX.XX.XX.XX"); //Host do servidor de envio
props.put("mail.smtp.port" , "25"); //Porta do servidor de envio
props.put("mail.smtp.auth" , "false"); //Usa uma conta autenticada
try {
Session session = Session.getInstance(props,null); //PEGA A SESSAO COM AS PRIPRIEDADES
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from)); //E-MAIL DE ORIGEM
// ASSUNDO DO EMAIL
msg.setSubject(assunto);
//SETA O CORPO DA MENSAGEM
//msg.setText(mensagem);
msg.setRecipient(Message.RecipientType.TO,new InternetAddress(to)); //E-MAIL DE DESTINO
msg.setSentDate(new Date()); //DATA ATUAL
BodyPart mbp1 = new MimeBodyPart();
mbp1.setText(mensagem);
BodyPart mbp2 = new MimeBodyPart();
mbp2.setText("");
FileDataSource fds = new FileDataSource(fileName);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
msg.setContent(mp);
Transport.send(msg);
} catch (AddressException e) {
// mensagem do e-mail invalido
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
//excluir
File f = new File(fileName);
if (f.exists())
f.delete();
}
} }
Chamada de método: Email email = new Email();
String de = "origem@conta.br";
String para = "destivo@conta.br";
String doc = "\\\\XX.XX.XX.XX\\TEMP\\" +object()+ ".xml";
String bol = "true";
String assunto = "XXXXX";
String mensagem = "XXXX";
email.enviaEmailAnexo(de, para, doc, bol,mensagem, assunto); Atenciosamente, R. Barcelos.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)