Oi Wesley,
faça o seguinte:
crie uma nova classe e copie e cole os códigos abaixo e faça um teste:
1) colocamos uma ação no botão que enviará o email
try {
enviaEmailComAnexo();
} catch (EmailException ex) {
Logger.getLogger(EnviaEmail.class.getName()).log(Level.SEVERE, null, ex);
}
2)Colocamos uma ação no botão que anexa arquivos (JFileChooser), criei um textField e chamei de jTFAnexar
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(null);
File file = fileChooser.getSelectedFile();
if (file != null && result == JFileChooser.APPROVE_OPTION) {
jTFAnexar.setText(file.getAbsolutePath());
}
3)Criamos a função de envio de emails (com ou sem anexo) que foi descrita no passo 1
public void enviaEmailComAnexo() throws EmailException{
// cria o anexo.
EmailAttachment anexo = new EmailAttachment();
anexo.setPath(jTFAnexar.getText());
//informações do destinatário
destinatario ="email do destinatario";// coloque aqui o email do destinatario - MODIFIQUE AQUI
nick = "nome do destinatario"; // coloque aqui o nome do destinatario - MODIFIQUE AQUI
//se não houver anexo no email
if(jTFAnexar.getText().equals("")){
// configura o email
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do e-mail
email.addTo(destinatario, nick); //destinatário
email.setFrom("[email removido]", "Seu Nome"); // remetente - MODIFIQUE AQUI
email.setSubject("assunto do e-mail"); // MODIFIQUE AQUI
email.setMsg("conteudo do e-mail"); //MODIFIQUE AQUI
email.setAuthentication("usuariodoemail", "senhadoemail");// MODIFIQUE AQUI
email.setSmtpPort(465);
email.setSSL(true);
email.setTLS(true);
// envia o email
email.send();
JOptionPane.showMessageDialog(null, "Mensagem enviada para "+ nick +" - "+ destinatario +" com sucesso!!");
}
else{//se houver anexo na mensagem
anexo.setDisposition(EmailAttachment.ATTACHMENT);
anexo.setDescription("Contém arquivo anexado");
anexo.setName("Titulo - Anexo");
// configura o email
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do e-mail
email.addTo(destinatario, nick); //destinatário
email.setFrom("[email removido]", "seu nome");//MODIFIQUE AQUI
email.setSubject("assunto do e-mail"); // MODIFIQUE AQUI
email.setMsg("conteudo do e-mail"); // MODIFIQUE AQUI
email.setAuthentication("usuario", "senha");//MODIFIQUE AQUI
email.setSmtpPort(465);
email.setSSL(true);
email.setTLS(true);
// adiciona arquivo(s) anexo(s)
email.attach(anexo);
// envia o email
email.send();
JOptionPane.showMessageDialog(null, "Mensagem enviada para "+ nick +" - "+ destinatario +" com sucesso!!");
}
}
Não se esqueça de incluir no início os imports:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;
Faça as substituições necessárias no passo 3, colocando os seus dados e faça o teste, se der erro posta aqui.
OBS: Eu uso esse código em programa desktop com BD embarcado, ou seja, ele funciona em qualquer lugar, provavelmente funcionará para você tambem. O mesmo foi baseado em um código aqui mesmo do fórum.
Abs
www.raulferreira.com.br
linkedin: http://www.linkedin.com/in/raulsenaferreira