Tenho um pequeno exemplo que fiz:
[code]package main;
import java.util.Date;
import java.util.Properties;
import info.clearthought.layout.TableLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
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;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.WindowConstants;
@SuppressWarnings(“serial”)
public class SendEmail extends javax.swing.JFrame {
{
//Set Look & Feel
try {
javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
e.printStackTrace();
}
}
private JLabel lbSeuNome;
private JLabel lbSeuEmail;
private JLabel lbDest;
public static JTextField tfNomeRemet;
public static JCheckBox ckEternamente;
public static JTextField tfQtde;
private JLabel lbQtde;
private JPanel paQtde;
public static JTextField tfPorta;
private JLabel lbPorta;
public static JComboBox cbServidores;
private JLabel lbServidor;
private static JTextField tfAnexo;
private JButton btAnexar;
private JLabel lbAnexo;
public static JTextField tfAssunto;
private JLabel lbAssunto;
public static JTextField tfDestEmail;
public static JTextField tfDestNome;
public static JPasswordField pfRemetSenha;
public static JTextField tfEmailRemet;
private JButton btLimpar;
public static JButton btEnviar;
private JPanel paBotoes;
public static JTextPane tpBody;
private JScrollPane spBody;
private JLabel lbParaEmail;
private JLabel lbSuaSenha;
/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
SendEmail inst = new SendEmail();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
public SendEmail() {
try {
this.setTitle("EMAIL");
TableLayout thisLayout = new TableLayout(new double[][] {{7.0, 125.0, 307.0, 179.0, 100.0, TableLayout.FILL, 7.0}, {7.0, 33.0, 34.0, 33.0, 23.0, 34.0, 34.0, 32.0, 27.0, 30.0, 149.0, 74.0, TableLayout.FILL, 7.0}});
thisLayout.setHGap(5);
thisLayout.setVGap(5);
getContentPane().setLayout(thisLayout);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
{
lbSeuNome = new JLabel();
getContentPane().add(lbSeuNome, "1, 1");
lbSeuNome.setText("Seu nome:");
}
{
lbSeuEmail = new JLabel();
getContentPane().add(lbSeuEmail, "1, 2");
lbSeuEmail.setText("Seu e-mail:");
}
{
lbSuaSenha = new JLabel();
getContentPane().add(lbSuaSenha, "1, 3");
lbSuaSenha.setText("Sua senha:");
}
{
lbDest = new JLabel();
getContentPane().add(lbDest, "1, 5");
lbDest.setText("Nome do destinatario");
}
{
lbParaEmail = new JLabel();
getContentPane().add(lbParaEmail, "1, 6");
lbParaEmail.setText("E-mail de destino");
}
{
spBody = new JScrollPane();
getContentPane().add(spBody, "1, 10, 5, 10");
{
tpBody = new JTextPane();
spBody.setViewportView(tpBody);
tpBody.setPreferredSize(new java.awt.Dimension(754, 221));
}
}
{
paBotoes = new JPanel();
getContentPane().add(paBotoes, "1, 12, 5, 12");
{
btEnviar = new JButton();
paBotoes.add(btEnviar);
btEnviar.setText("Enviar");
btEnviar.setPreferredSize(new java.awt.Dimension(120, 25));
btEnviar.addActionListener(new ActionListener() {
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent evt) {
if (validaCampos())
{
try{
enviarEmail(tfDestEmail.getText(), tfDestNome.getText(), tfEmailRemet.getText(), tfNomeRemet.getText(), tfAssunto.getText(), tpBody.getText(),cbServidores.getSelectedItem().toString(), tfEmailRemet.getText(), pfRemetSenha.getText(),tfPorta.getText(),Integer.parseInt(tfQtde.getText()), ckEternamente.isSelected());
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
else
{
JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente", "E-mail", JOptionPane.WARNING_MESSAGE);
}
}
});
}
{
btLimpar = new JButton();
paBotoes.add(btLimpar);
btLimpar.setText("Limpar");
btLimpar.setPreferredSize(new java.awt.Dimension(118, 25));
btLimpar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
limpar();
}
});
}
}
{
tfNomeRemet = new JTextField();
getContentPane().add(tfNomeRemet, "2, 1, 5, 1");
tfNomeRemet.setText("Conde Dracula...");
}
{
tfEmailRemet = new JTextField();
getContentPane().add(tfEmailRemet, "2, 2, 5, 2");
}
{
pfRemetSenha = new JPasswordField();
getContentPane().add(pfRemetSenha, "2, 3, 5, 3");
}
{
tfDestNome = new JTextField();
getContentPane().add(tfDestNome, "2, 5, 5, 5");
}
{
tfDestEmail = new JTextField();
getContentPane().add(tfDestEmail, "2, 6, 5, 6");
}
{
lbAssunto = new JLabel();
getContentPane().add(lbAssunto, "1, 7");
lbAssunto.setText("Assunto:");
}
{
tfAssunto = new JTextField();
getContentPane().add(tfAssunto, "2, 7, 5, 7");
}
{
lbAnexo = new JLabel();
getContentPane().add(lbAnexo, "1, 9");
lbAnexo.setText("Anexo");
}
{
btAnexar = new JButton();
getContentPane().add(btAnexar, "5, 9");
btAnexar.setText("...");
btAnexar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Anexar");
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
while(true)
{
int a = fileChooser.showOpenDialog(null);
// Se a for igual a zero e porque o usuario clicou em salvar, se for 1 e porque clicou em cancelar
if (a==0)
{
String arquivo = fileChooser.getSelectedFile().getAbsolutePath();// Aqui estou pegando o nome do arquivo e o endereco dele
tfAnexo.setText(arquivo);
break;
}
else
{
break;
}
}
}
});
}
{
tfAnexo = new JTextField();
getContentPane().add(tfAnexo, "2, 9, 4, 9");
tfAnexo.setEnabled(false);
}
{
lbServidor = new JLabel();
getContentPane().add(lbServidor, "1, 8");
lbServidor.setText("Servidor:");
}
{
ComboBoxModel cbServidoresModel =
new DefaultComboBoxModel(
new String[] { "smtp.live.com", "smtp.mail.yahoo.com.br" });
cbServidores = new JComboBox();
getContentPane().add(cbServidores, "2, 8");
cbServidores.setModel(cbServidoresModel);
cbServidores.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (cbServidores.getSelectedIndex()== 0)
{
tfPorta.setText("25");
}
else
{
tfPorta.setText("");
}
}
});
}
{
lbPorta = new JLabel();
getContentPane().add(lbPorta, "3, 8");
lbPorta.setText("Porta (para yahoo! n\u00e3o precisa):");
}
{
tfPorta = new JTextField();
getContentPane().add(tfPorta, "4, 8, 5, 8");
tfPorta.setText("25");
}
{
paQtde = new JPanel();
getContentPane().add(paQtde, "1, 11, 5, 11");
{
lbQtde = new JLabel();
paQtde.add(lbQtde);
lbQtde.setText("Qtde de emails a enviar:");
lbQtde.setPreferredSize(new java.awt.Dimension(145, 14));
}
{
tfQtde = new JTextField();
paQtde.add(tfQtde);
tfQtde.setText("1");
tfQtde.setPreferredSize(new java.awt.Dimension(647, 28));
tfQtde.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
try
{
Long.parseLong(tfQtde.getText());
}
catch(Exception ex)
{
tfQtde.setText("1");
}
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
try
{
Long.parseLong(tfQtde.getText());
}
catch(Exception ex)
{
tfQtde.setText("1");
}
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
try
{
Long.parseLong(tfQtde.getText());
}
catch(Exception ex)
{
tfQtde.setText("1");
}
}
});
}
{
ckEternamente = new JCheckBox();
paQtde.add(ckEternamente);
ckEternamente.setPreferredSize(new java.awt.Dimension(253, 18));
ckEternamente.setVisible(false);
}
}
//this.setSize(800,600);
this.setSize(800,650);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void enviarEmail(String emailDest, String nomeDest,
String emailRemet, String nomeRemet, String assunto, String corpo,String servidor,final String user, final String password,String porta,int qtde,boolean forever)
throws Exception {
Properties props = System.getProperties();
props.put("mail.smtp.host", servidor);
props.put("mail.smtp.auth", "true");
props.put ( "mail.smtp.starttls.enable", "true");
props.put("mail.stmtp.port",porta);
props.put("mail.mime.charset", "ISO-8859-1");
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}};
Session session = Session.getInstance(props, auth);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(emailRemet, nomeRemet));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(emailDest, nomeDest));
message.setSubject(assunto);
// cria a primeira parte da mensagem
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(corpo);
// cria a segunda parte da mensage
MimeBodyPart mbp2 = new MimeBodyPart();
if (tfAnexo.getText().length()>0){
// anexa o arquivo na mensagem
FileDataSource fds = new FileDataSource(tfAnexo.getText());
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
}
// cria a Multipart
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
if (tfAnexo.getText().length()>0){
mp.addBodyPart(mbp2);
}
// adiciona a Multipart na mensagem
message.setContent(mp);
// configura a data: cabecalho
message.setSentDate(new Date());
tpBody.setText("");
if (forever)
{
while (true)
{
// envia a mensagem
Transport.send(message);
}
}
else
{
for (int i=0;i<qtde;i++){
// envia a mensagem
Transport.send(message);
}
}
//message.setContent(corpo, "text/plain");
/*if (tfAnexo.getText().length()>0)
{
// anexa o arquivo na mensagem
FileDataSource fds = new FileDataSource(tfAnexo.getText());
message.setDataHandler(new DataHandler(fds));
message.setFileName(fds.getName());
}*/
//Transport.send(message);
JOptionPane.showMessageDialog(null, "PARABENS", "MAIL", JOptionPane.WARNING_MESSAGE);
btEnviar.setText("Enviar");
}
@SuppressWarnings("deprecation")
public boolean validaCampos()
{
boolean ok = true;
if (tfDestEmail.getText().length()==0)
ok = false;
else if (tfDestNome.getText().length()==0)
ok = false;
else if (tfEmailRemet.getText().length()==0)
ok = false;
else if (tfNomeRemet.getText().length()==0)
ok = false;
else if (pfRemetSenha.getText().length()==0)
ok = false;
if (tfQtde.getText().equals("") || tfQtde.getText().equals("1"))
{
tfQtde.setText("1");
}
return ok;
}
public static void limpar()
{
tfAnexo.setText("");
tfAssunto.setText("");
tfDestEmail.setText("");
tfDestNome.setText("");
tfEmailRemet.setText("");
tfNomeRemet.setText("");
tfPorta.setText("25");
tfQtde.setText("1");
cbServidores.setSelectedIndex(0);
tpBody.setText("");
btEnviar.setText("Enviar");
}
}
[/code]