Envio de Email com Anexo [RESOLVIDO]

Bom pessoal tenho o seguinte codigo

[code]

import java.util.Properties;
import javax.activation.CommandMap;
import javax.activation.MailcapCommandMap;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class SendMail {

String server = FileConfig.getInstance().getsmtp();
private String host = server; /* endereço do servidor smtp */


public class SMTPAuthenticator extends Authenticator {

    @Override
    public PasswordAuthentication getPasswordAuthentication() {
        String user = FileConfig.getInstance().getuser();
        String pwd = FileConfig.getInstance().getpwd();
        String username = user;
        String password = pwd;
        return new PasswordAuthentication(username, password);
    }
}

public void EnviarEmailPara(String para, String assunto, String mensagem) throws Exception {
    Properties mailProps = System.getProperties();
    mailProps.put("mail.smtp.host", this.host);

    //String fileAttachment = "";
    Authenticator auth = new SMTPAuthenticator();
    Session session = Session.getDefaultInstance(mailProps, auth);

    mailProps.put("mail.smtp.auth", "true");
    mailProps.put("mail.debug", "true");
    mailProps.put("mail.smtp.debug", "true");
    mailProps.put("mail.mime.charset", "ISO-8859-1");
    mailProps.put("mail.smtp.port", "25");

    MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
    mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
    mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
    mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
    mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
    mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");

    CommandMap.setDefaultCommandMap(mc);

    // Definir mensagem
    MimeMessage message = new MimeMessage(session);
    String from = FileConfig.getInstance().getuser();

    message.setFrom(new InternetAddress(from));
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(para));
    message.setSubject(assunto);
    //JOptionPane.showMessageDialog(null,message.getFrom()[0].toString() + " " + message.getAllRecipients()[0].toString());
    // Criar parte da mensagem
    MimeBodyPart messageBodyPart = new MimeBodyPart();

    // Texto da mensagem
    messageBodyPart.setText(mensagem);

    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(messageBodyPart);

    // Enviar parte da mensagem
    message.setContent(multipart);
    
    message.setContent(mensagem.toString(), "text/html");

    // Enviar toda a mensagemSend the message
    Transport.send(message);
}

}[/code]

Porem não estou conseguindo enviar anexo junto a isso alguem tem uma ideia.

Desde já agradeço pela atenção

Tente fazer assim:


// Altere o MimeMessage para Message
Message msg = new MimeMessage(session);

// Sete suas informacoes
.
.
.

// Altere o MimeBodyPart para BodyPart
BodyPart messageBodyPart = new MimeBodyPart();

// Seta as informacoes necessarias
.
.
.

// Adicionado mensagem
          Multipart multipart = new MimeMultipart();
          multipart.addBodyPart(messageBodyPart);

// Adiciona anexos
BodyPart bodyPart = new MimeBodyPart(); 
FileDataSource fileDataSource = new FileDataSource(new File("c:\arquivo.pdf")) {
	   	          @Override
	   	          public String getContentType() {
	   	        	  return "application/octet-stream";
	   	          	}
	          	  };
bodyPart.setDataHandler(new DataHandler(fileDataSource));
bodyPart.setFileName("arquivo.pdf");
multipart.addBodyPart(bodyPart); // add anexo
	          

// Finalizando mensagem para transportar
msg.setContent(multipart);        

// Agora vc tenta enviar de acordo com seu provedor de email
.
.
.

Espero q funcione, abraço.

Bah cara nao consegui tem como tu colocar + ou - como seria o resto do código Obrigado pela atenção.

Estou enviando com um email do gmail

   //Objeto encarregado de enviar os dados para o email  
      Transport tr;  
      try {  
          tr = session.getTransport(mailProtocolo); //define smtp para transporte  
          /* 
           *  1 - define o servidor smtp 
           *  2 - seu nome de usuario 
           *  3 - sua senha
           */  
          tr.connect(mailServer, userMail, userMailSenha);  
          msg.saveChanges();
          //envio da mensagem  
          tr.sendMessage(msg, msg.getAllRecipients());  
          tr.close();  
          System.out.println("EMAIL ENVIADO");
      } catch (Exception e) {  
          // TODO Auto-generated catch block  
          System.out.println(">> Erro: Envio Mensagem");  
          e.printStackTrace();  
      }  

Eu tenho o seguite código ele até anexa alguma coisa mas não é o documento correto

[code]

import java.io.File;
import java.util.Properties;
import javax.activation.CommandMap;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.activation.MailcapCommandMap;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class SendMail {
String server = FileConfig.getInstance().getsmtp();
private String host = server; /* endereço do servidor smtp */

public class SMTPAuthenticator extends Authenticator {
    @Override
    public PasswordAuthentication getPasswordAuthentication() {
        String user = FileConfig.getInstance().getuser();
        String pwd = FileConfig.getInstance().getpwd();
        String username = user;
        String password = pwd;
        return new PasswordAuthentication(username, password);
    }
}


public void EnviarEmailPara(String para, String assunto, String mensagem) throws Exception {
    Properties mailProps = System.getProperties();
    mailProps.put("mail.smtp.host", this.host);
    String fileAttachment = "";
    Authenticator auth = new SMTPAuthenticator();
    Session session = Session.getDefaultInstance(mailProps, auth);
    
    mailProps.put("mail.smtp.auth", "true");
    mailProps.put("mail.debug", "true");
    mailProps.put("mail.smtp.debug", "true");
    mailProps.put("mail.mime.charset", "ISO-8859-1");
    mailProps.put("mail.smtp.port", "25");
    
    MailcapCommandMap mc = (MailcapCommandMap)CommandMap.getDefaultCommandMap();
    //mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
    mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
    mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
    mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
    mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
    CommandMap.setDefaultCommandMap(mc);

    // Definir mensagem
    MimeMessage message = new MimeMessage(session);
    String from = FileConfig.getInstance().getuser();

    message.setFrom(new InternetAddress(from));
    message.addRecipient(Message.RecipientType.TO,new InternetAddress(para));
    //message.setSubject(assunto);
    message.setSubject(assunto);
    //JOptionPane.showMessageDialog(null,message.getFrom()[0].toString() + " " + message.getAllRecipients()[0].toString());
    // Criar parte da mensagem
    MimeBodyPart messageBodyPart = new MimeBodyPart();
    // Texto da mensagem
    FileDataSource fileDataSource = new FileDataSource(new File("C:\relatoriodia.xls"));
    messageBodyPart.setDataHandler(new DataHandler(fileDataSource));
    messageBodyPart.setFileName("relatoriodia.xls");
    messageBodyPart.setText(mensagem);

   
    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(messageBodyPart);
    //Enviar parte da mensagem
     message.setContent(multipart);//,mensagem.toString(), "text/html");
    //Enviar toda a mensagemSend the message
    Transport.send(message);


}

}[/code]

Ele envia um arquivo texto em vez de um pdf

Fiz uma alteração, porem acho q será enviado só o anexo, e o texto não será enviado. Me add no msn qualquer coisa, rdmardegam@hotmail.com

public void EnviarEmailPara(String para, String assunto, String mensagem) throws Exception {  
      Properties mailProps = System.getProperties();  
        mailProps.put("mail.smtp.host", this.host);  
        String fileAttachment = "";  
        Authenticator auth = new SMTPAuthenticator();  
        Session session = Session.getDefaultInstance(mailProps, auth);  
          
        mailProps.put("mail.smtp.auth", "true");  
        mailProps.put("mail.debug", "true");  
        mailProps.put("mail.smtp.debug", "true");  
        mailProps.put("mail.mime.charset", "ISO-8859-1");  
        mailProps.put("mail.smtp.port", "25"); 

        
          
        MailcapCommandMap mc = (MailcapCommandMap)CommandMap.getDefaultCommandMap();  
        //mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");  
        mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");  
        mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");  
        mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");  
        mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");  
        CommandMap.setDefaultCommandMap(mc);  
  
        // Definir mensagem  
        MimeMessage message = new MimeMessage(session);  
        String from = "rdmardegam@gmail.com";  
  
        message.setFrom(new InternetAddress(from));  
        message.addRecipient(Message.RecipientType.TO,new InternetAddress(para));  
        //message.setSubject(assunto);  
        message.setSubject(assunto);  
        //JOptionPane.showMessageDialog(null,message.getFrom()[0].toString() + " " + message.getAllRecipients()[0].toString());  
        // Criar parte da mensagem  
        MimeBodyPart messageBodyPart = new MimeBodyPart();  
        
        // Texto da mensagem  
        BodyPart bodyPart = new MimeBodyPart(); 
    	  FileDataSource fileDataSource = new FileDataSource(new File("C:\relatorio.xls")) {
	          @Override
	          public String getContentType() {
	        	  return "application/octet-stream";
	          	}
    	  };
         bodyPart.setDataHandler(new DataHandler(fileDataSource));
         bodyPart.setFileName("relatoriodia.xls");
        
         messageBodyPart.setText(mensagem);  
  
         
        Multipart multipart = new MimeMultipart();  
        multipart.addBodyPart(bodyPart);  
        //Enviar parte da mensagem  
         message.setContent(multipart);//,mensagem.toString(), "text/html");  
        //Enviar toda a mensagemSend the message  
        Transport.send(message);  
    }

Cara você testou e funcionou?
Vou ver com o pessoal do Ti se eles me liberam o msn.

Não, não testei!!

Blz vou ver aquio como vou fazer

Tenta fazer parecido com o meu primeiro post.
Abraço.

Qualquer coisa fala ae

FUNCIONO DEI UMA GRANDE PENSADA AQUI E FUNCIONO CERTINHO

[code]

import java.io.File;
import java.util.Properties;
import javax.activation.CommandMap;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.activation.MailcapCommandMap;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class SendMail {
String server = FileConfig.getInstance().getsmtp();
private String host = server; /* endereço do servidor smtp */

public class SMTPAuthenticator extends Authenticator {
    @Override
    public PasswordAuthentication getPasswordAuthentication() {
        String user = FileConfig.getInstance().getuser();
        String pwd = FileConfig.getInstance().getpwd();
        String username = user;
        String password = pwd;
        return new PasswordAuthentication(username, password);
    }
}


public void EnviarEmailPara(String para, String assunto, String mensagem) throws Exception {
    Properties mailProps = System.getProperties();
    mailProps.put("mail.smtp.host", this.host);
    String fileAttachment = "";
    Authenticator auth = new SMTPAuthenticator();
    Session session = Session.getDefaultInstance(mailProps, auth);

    mailProps.put("mail.smtp.auth", "true");
    mailProps.put("mail.debug", "true");
    mailProps.put("mail.smtp.debug", "true");
    mailProps.put("mail.mime.charset", "ISO-8859-1");
    mailProps.put("mail.smtp.port", "25");

    MailcapCommandMap mc = (MailcapCommandMap)CommandMap.getDefaultCommandMap();
    mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
    mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
    mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
    mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
    mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
    CommandMap.setDefaultCommandMap(mc);
    // Definir mensagem
    MimeMessage message = new MimeMessage(session);
    String from = FileConfig.getInstance().getuser();
    message.setFrom(new InternetAddress(from));
    message.addRecipient(Message.RecipientType.TO,new InternetAddress(para));
    message.setSubject(assunto);
    // Criar parte da mensagem
    MimeBodyPart messageBodyPart = new MimeBodyPart();
    // Texto da mensagem
    messageBodyPart.setText(mensagem);





    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(messageBodyPart);



    BodyPart bodyPart = new MimeBodyPart();
    FileDataSource fileDataSource = new FileDataSource(new File("c:\relatoriodia.xls"));
    bodyPart.setDataHandler(new DataHandler(fileDataSource));
    bodyPart.setFileName("relatoriodia.xls");
    multipart.addBodyPart(bodyPart);
    // Enviar parte da mensagem
    message.setContent(multipart);
    message.setFileName("relatoriodia.xls");
    //message.setContent(mensagem.toString(), "text/html");

    Transport.send(message);

}
}[/code]

Entao show de bola, parabens.

Agora so se voce precisar, tente implementar para enviar varios anexos ou se isso já resolve show de bola.

Flw

Bah velho boa ideia vour ver como posso fazer um dia em que eu tiver mais tempo.Mas agradeço demais pela sua ajuda.Quando você quizer
eu estou ai para lhe ajudar 8)