[RESOLVIDO]JavaMail anexar arquivo

Bom dia a todos gostaria de uma luz, como faço para enviar anexos junto ao email, até consegui fazer

mais caso haja um anexo o texto do email não aparece,

segue codigo :

[code] public boolean enviaMensagem(String assunto, String texto, String recipe) {
String host = “MEUSMTP”;

    String username = "EMAIL";
    String password = "SENHA";

    String recipientEmailAddress = recipe;

    Transport transport = null;

    boolean mensagemEnviada = false;

    try {
        final InternetAddress sender = new InternetAddress(username);
        final InternetAddress recipient = new InternetAddress(recipientEmailAddress);

        Properties properties = new Properties();
        properties.put("mail.smtp.auth", "true");

        Session session = Session.getDefaultInstance(properties);

        MimeMessage mensagem = new MimeMessage(session);
        mensagem.setSubject(assunto);
        mensagem.setText(texto);
        mensagem.setFrom(sender);
        mensagem.addRecipient(Message.RecipientType.TO, recipient);
        mensagem.saveChanges();
        
        FileDataSource fds = new FileDataSource("C:\teste.txt");
        mensagem.setDataHandler(new DataHandler(fds));
        mensagem.setFileName(fds.getName());
        
        transport = session.getTransport("smtp");
        transport.connect(host, sender.getAddress(), password);
        transport.sendMessage(mensagem, mensagem.getAllRecipients());
        transport.close();

        mensagemEnviada = true;

    } catch (MessagingException ex) {
        System.out.println("Erro :" + ex);
    } finally {
        try {
            transport.close();
        } catch (Exception ex) {
            System.out.println("Erro :" + ex);
        }
    }
    return mensagemEnviada;
}[/code]

Tens de criar dois elementos diferentes, um para o texto e um para o anexo e adicionar os dois à tua mensagem.

(Não testei)

            MimeMessage mensagem = new MimeMessage(session);  
            mensagem.setSubject(assunto);  
            mensagem.setFrom(sender);  
            mensagem.addRecipient(Message.RecipientType.TO, recipient);  
            mensagem.saveChanges();  
            
            MimeBodyPart mensagemBody =  new MimeBodyPart();
            mensagemBody.setText(texto);

            MimeBodyPart  anexoBody = new MimeBodyPart();
            FileDataSource fds = new FileDataSource("C:\teste.txt");  
            anexoBody.setDataHandler(new DataHandler(fds));
            anexoBody.setFileName(fds.getName());

            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(mensagemBody);
            multipart.addBodyPart(anexoBody);

            mensagem.setContent(multipart);
           

bom dia pmlm, teste aqui mais sem exito, este codigo faz com que o conteudo do anexo(que é um xml) apareça no corpo da mensagem

vou continuar testando aqui.

obrigado pela ajuda.

Cara se não conseguir anexar arquivos ao e-mail, tem um tutorial no site da DevMedia que utiliza a API do Commons-email e bem simples… da uma olhada la depois
http://www.devmedia.com.br/articles/viewcomp.asp?comp=3306

Bom dia jweibe, vi o link me parece muito facil mesmo com esta api

mais meu patrão quer que eu use o JavaMail =/

Abraço.

[quote=WalkMan]bom dia pmlm, teste aqui mais sem exito, este codigo faz com que o conteudo do anexo(que é um xml) apareça no corpo da mensagem

vou continuar testando aqui.

obrigado pela ajuda.[/quote]

Faltou uma linha:

 anexoBody.setDisposition(Part.ATTACHMENT);

pmlm, estou usando o codigo da seguinte maneira

anexoBody.setDataHandler(new DataHandler(fds)); anexoBody.setDisposition(Part.ATTACHMENT); anexoBody.setFileName(fds.getName());

mas tambem sem resultado =/

Este método funciona há anos. Vê o que poderá faltar.

[code]public void sendMail(String from, String to, String subject, String message, String attach) {

        MimeMessage mimeMessage = mailSender.createMimeMessage();
        mimeMessage.setSubject(subject, CHARSET);
        
        Address addressFrom = new InternetAddress(from);
        mimeMessage.setFrom(addressFrom);
        mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

        Multipart multipart = new MimeMultipart();

        // Texto
        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setContent(message, "text/plain");
        multipart.addBodyPart(messageBodyPart);

        //Anexo
        File file = new File(attach);
        DataSource ds = new FileDataSource(file) {

            public String getContentType() {
                return "application/octet-stream";
            }
        };

        BodyPart mbp = new MimeBodyPart();
        mbp.setDataHandler(new DataHandler(ds));
        mbp.setFileName(file.getName());
        mbp.setDisposition(Part.ATTACHMENT);
        multipart.addBodyPart(mbp);

        mimeMessage.setContent(multipart);
        mailSender.send(mimeMessage);

}[/code]

Da uma olhada aqui: http://mballem.wordpress.com/2011/02/15/enviando-email-com-a-api-javamail/

Ensina a enviar email com varios anexos e utilizando o javamail.

romarcio pmlm, consegui implementar graças aos exemplos de voces!

muito obrigado!

abraços.

[quote=WalkMan]romarcio pmlm, consegui implementar graças aos exemplos de voces!

muito obrigado!

abraços.[/quote]
:thumbup: