valeu já consegui enviar um email com um pdf de 4.5mb em anexo usando o JavaMail, com o seguinte código
package Principal;
import java.io.*;
import java.util.*;
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;
public class Email {
private static String EMAIL_REMETENTE = "seuemail";
private static String NOME_REMETENTE = "seunome";
private static String SERVIDOR_SMTP = "enderecosmtp";
private static String SENHA = "senha";
public void enviarEmail(String assunto, String conteudo, Cliente destinatario, String arquivo) throws AddressException, MessagingException {
Session sessao = obterSessao();
Message mensagem = criarMensagem(sessao, assunto, destinatario);
adicionarConteudoEAnexo(mensagem, conteudo, destinatario, arquivo);
mensagem.saveChanges();
Transport transport = null;
try {
transport = sessao.getTransport("smtp");
transport.send(mensagem);
} finally {
transport.close();
}
}
private Message criarMensagem(Session session, String assunto, Cliente destinatario) throws MessagingException, AddressException {
MimeMessage mensagem = new MimeMessage(session);
Address enderecoRemetente = null;
Address enderecoDestinatario = null;
try {
enderecoDestinatario = new InternetAddress(destinatario.getEmail(), destinatario.getNome());
enderecoRemetente = new InternetAddress(EMAIL_REMETENTE, NOME_REMETENTE);
} catch (UnsupportedEncodingException ex) {
throw new AddressException(ex.getMessage());
}
mensagem.addRecipient(Message.RecipientType.TO, enderecoDestinatario);
mensagem.setFrom(enderecoRemetente);
mensagem.setSubject(assunto);
mensagem.setSentDate(new Date());
return mensagem;
}
private void adicionarConteudoEAnexo(Message message, String conteudo, Cliente destinatario, String arquivo) throws MessagingException, AddressException {
// Cria um Multipart que será composto pelo conteudo e pelo anexo
Multipart multipart = new MimeMultipart();
// Cria a parte do corpo da mensagem (texto do conteúdo do e-mail)
BodyPart messageBodyPartConteudo = new MimeBodyPart();
messageBodyPartConteudo.setContent(conteudo, "text/html");
// Adiciona o corpo da mensagem ao Multipart
multipart.addBodyPart(messageBodyPartConteudo);
if (arquivo != null && !arquivo.equals("")) {
// Cria uma segunda parte do corpo (anexos do contéudo do e-mail)
BodyPart messageBodyPartAnexo = new MimeBodyPart();
// Cria o anexo
DataSource source = new FileDataSource(arquivo);
// Define o data handler para o anexo
messageBodyPartAnexo.setDataHandler(new DataHandler(source));
// Define o nome do arquivo
String nomeArquivo = new File(arquivo).getName();
messageBodyPartAnexo.setFileName(nomeArquivo);
// Adiciona o anexo ao Multipart
multipart.addBodyPart(messageBodyPartAnexo);
}
// Adiciona o Multipart a mensagem
message.setContent(multipart);
}
private Session obterSessao() {
Session sessao = null;
Properties props = new Properties();
props.put("mail.smtp.host", SERVIDOR_SMTP);
props.put("mail.smtp.auth", "true");
sessao = Session.getDefaultInstance(props, new Autenticador(EMAIL_REMETENTE, SENHA));
return sessao;
}
public class Autenticador extends javax.mail.Authenticator {
private String user;
private String senha;
public Autenticador() {
}
public Autenticador(String user, String senha) {
this.user = user;
this.senha = senha;
}
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, senha);
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Principal;
import java.io.Serializable;
/**
*
* @author Junior
*/
public class Cliente implements Serializable {
private long id;
private String nome = "";
private String email = "";
private String telefone = "";
public Cliente() {
}
public Cliente(String nome, String email, String telefone) {
this.nome = nome;
this.email = email;
this.telefone = telefone;
}
public Cliente(long id, String nome, String email, String telefone) {
this(nome, email, telefone);
this.id = id;
}
public String getEmail() {
return email;
}
public String getNome() {
return nome;
}
}
A parte de relatorio eu to estudando pra ver como fazer graficos e tal, estou gostando até o momento, estou usando jasper e a ferramenta ireport para construir os relatorios.