Email com java

Estou tentando enviar um e-mail para mim msm mais não sei se estou fazendo certo… se alguem pode ajudar ou dar uma luz agradeço desde já segue a baixo o código e erro!

[code]import javax.mail.;
import java.util.
;
import javax.mail.internet.*;

public class Mail {

public static void main(String[] args) {

	Properties p = new Properties();
	p.put("mail.host", "smtp.gmail.com");
	p.put("mail.smtp.auth", "true");
	Session session = Session.getDefaultInstance (p, new Authenticator() {  
		protected PasswordAuthentication getPasswordAuthentication() {  
			return new PasswordAuthentication("meu login", "minha senha");  
		}  
		});
	session.setDebug (true);
	MimeMessage msg = new MimeMessage(session); 

	try {  
	
		// "de" e "para"!!  
		msg.setFrom(new InternetAddress("miqueiaspenha@gmail.com"));  
		msg.setRecipient(Message.RecipientType.TO, new InternetAddress("miqueiaspenha@gmail.com"));  

		// nao esqueca da data!  
		// ou ira 31/12/1969 !!!  
		msg.setSentDate(new Date());  

		msg.setSubject("assunto da mensagem");  

		msg.setText("corpo da mensagem");  

		// evniando mensagem (tentando)  
		Transport.send(msg);
	
	}  
	catch (AddressException e) {  
		System.out.println(e);
	}  
	catch (MessagingException e) {  
		System.out.println("Isso aki: "+e);
	}

}

}[/code]

Erro junto com debug:
[i]

c:\Java\Mail>javac Mail.java

c:\Java\Mail>java Mail
DEBUG: setDebug: JavaMail version 1.4.4
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.s
mtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host “smtp.gmail.com”, port 25, isSSL false
220 mx.google.com ESMTP c39sm2882853anc.33
DEBUG SMTP: connected to host “smtp.gmail.com”, port: 25

EHLO Mick-PC
250-mx.google.com at your service, [187.79.122.244]
250-SIZE 35651584
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
DEBUG SMTP: Found extension “SIZE”, arg “35651584”
DEBUG SMTP: Found extension “8BITMIME”, arg “”
DEBUG SMTP: Found extension “STARTTLS”, arg “”
DEBUG SMTP: Found extension “ENHANCEDSTATUSCODES”, arg “”
DEBUG SMTP: use8bit false
MAIL FROM:miqueiaspenha@gmail.com
530 5.7.0 Must issue a STARTTLS command first. c39sm2882853anc.33
DEBUG SMTP: got response code 530, with response: 530 5.7.0 Must issue a STARTTL
S command first. c39sm2882853anc.33

RSET
250 2.1.5 Flushed c39sm2882853anc.33
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS comma
nd first. c39sm2882853anc.33

    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2
  1. at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)
    at javax.mail.Transport.send0(Transport.java:195)
    at javax.mail.Transport.send(Transport.java:124)
    at Mail.main(Mail.java:35)
    QUIT
    221 2.0.0 closing connection c39sm2882853anc.33
    Isso aki: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STAR
    TTLS command first. c39sm2882853anc.33[/i]

vou postar um exemplo para voce! porem usando IMAP

[code]public class Constantes {

public static final String PASTA_XML = "C:\Users\Rafael\Desktop\Email\Recebidos\";
public static final String IMAP = "imap";
public static final String HOST = "seu host";
public static final int PORTA = 143;
public static final String ARQUIVO_MSG = "";
public static final String LOGIN = "login do email";
public static final String SENHA = "senha do email" ;
public static final String PASTA_PRINCIPAL = "Inbox";

}
[/code]

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;

import javax.mail.AuthenticationFailedException;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.FolderClosedException;
import javax.mail.FolderNotFoundException;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.NoSuchProviderException;
import javax.mail.Part;
import javax.mail.ReadOnlyFolderException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.StoreClosedException;
import javax.mail.URLName;
import javax.mail.search.FlagTerm;

public class ReadEmails {

    private Store store = null;
    private Folder folder = null;
    private Message message = null;
    private Message[] messages = null;
    private Object msgObj = null;
    private String sender = null;
    @SuppressWarnings("unused")
    private String subject = null;
    private Multipart multipart = null;
    private Part part = null;
    private String contentType = null;
    private int numeroArquivosBaixados = 0;

    public ReadEmails() throws MessagingException {
        processMail();
    }

    /**
     * Processa o e-mail
     *
     */
    public void processMail() throws MessagingException {
        try {
            store = conexaoServidorEMail();
            folder = getPastaCaixaEntrada(store);
            // messages = folder.getMessages();
            messages = folder.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false)); // baixa apenas as mensagens nao lidas


            for (int messageNumber = 0; messageNumber < messages.length; messageNumber++) {
                message = messages[messageNumber];
                msgObj = message.getContent();

                // Determine o tipo de email
                if (msgObj instanceof Multipart) {

                    subject = message.getSubject();
                    multipart = (Multipart) message.getContent();

                    for (int i = 0; i < multipart.getCount(); i++) {

                        part = multipart.getBodyPart(i);
                        // pegando um tipo do conteúdo
                        contentType = part.getContentType();


                        String fileName2 = part.getFileName();
                        if (fileName2 != null) {
                            int tamanhoString = fileName2.length() - 3;
                            if (fileName2.substring(tamanhoString).equals("xml")) { // verifica se o arquivo é um xml
                                System.out.println("Nro: " + messageNumber + ". Nome do Anexo: " + fileName2 + ". Corpo da Mensagem:  " + message.getSubject());
                                salvarArquivo(part);
                                message.setFlag(Flags.Flag.SEEN, true); // apos baixar o arquivo sinaliza a mensagem como lida :D
                                numeroArquivosBaixados = numeroArquivosBaixados + 1;
                            }
                        }
                        fileName2 = null;
                    }
                }
            }
            // Fecha a pasta
            folder.close(true);
            // Histório de mensagens
            store.close();
            System.out.println("Terminado. Numero de Arquivos Baixados: " + getNumeroArquivosBaixados());

        } catch (AuthenticationFailedException e) {
            store.close();
            e.printStackTrace();
        } catch (FolderClosedException e) {
            store.close();
            e.printStackTrace();
        } catch (FolderNotFoundException e) {
            store.close();
            e.printStackTrace();
        } catch (NoSuchProviderException e) {
            store.close();
            e.printStackTrace();
        } catch (ReadOnlyFolderException e) {
            store.close();
            e.printStackTrace();
        } catch (StoreClosedException e) {
            store.close();
            e.printStackTrace();
        } catch (Exception e) {
            store.close();
            e.printStackTrace();
        }
    }

    private int getNumeroArquivosBaixados() {
        return numeroArquivosBaixados;
    }

// não é usado..
    private void excluirMensagemInbox(Message[] messages, int i) throws MessagingException {
        @SuppressWarnings("unused")
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        messages[i].setFlag(Flags.Flag.DELETED, true);
    }




    /**
     * Salva o arquivo em uma pasta
     */
    private void salvarArquivo(Part part) throws IOException, MessagingException {
        FileOutputStream fileOutputStream = new FileOutputStream(Constantes.PASTA_XML + part.getFileName());
        Object obj = part.getInputStream();
        if (obj instanceof InputStream) {
            InputStream is = (InputStream) obj;
            int ch = -1;
            while ((ch = is.read()) != -1) {
                fileOutputStream.write(ch);
            }
        }
        fileOutputStream.flush();
        fileOutputStream.close();
    }

    /**
     * Acessa a Caixa de Entrada (Inbox)
     */
    private Folder getPastaCaixaEntrada(Store store) throws MessagingException {
        Folder folder;
        folder = store.getFolder(Constantes.PASTA_PRINCIPAL);
        folder.open(Folder.READ_WRITE);
        return folder;
    }


    /**
     * Autenticação e conexão com o Servidor de e-mail
     */
    private Store conexaoServidorEMail() throws NoSuchProviderException, MessagingException {
        Session session;
        Store store;
        Properties prop = new Properties();
        session = Session.getInstance(prop);
        URLName url = new URLName(Constantes.IMAP, Constantes.HOST, Constantes.PORTA, Constantes.ARQUIVO_MSG, Constantes.LOGIN, Constantes.SENHA);
        store = session.getStore(url);
        store.connect();
        return store;
    }
}

[code]import javax.mail.MessagingException;

/**
*

  • @author Rafael
    */

    public class PrincipalNfe {

     public static void main(String[] args) {
         @SuppressWarnings("unused")
         ReadEmails readMail = null;
         try {
             readMail = new ReadEmails();
             
         } catch (MessagingException e) {
             e.printStackTrace();
         }
     }
    

    }
    [/code]

lembrando que eu uso a API JAVAMAIL

Mick_xd, um detalhe,
para que funcione POP do jeito que você fez inicialmente é necessário que na conta do GMail esteja habilitada esta opção (não é padrão).
Para isso vá em Settings - Forwarding and POP/IMAP e habilite a opção.
Senão vai ter que fazer do jeito que o RafaelViny sugeriu (IMAP)

Amigo esse código todo eu peguei aki no guj e fiz algumas alterações no momento eu naum quero baixar os e-mails mais simplesmente enviar um email sera que teria um modo mais facil?

Eu utilizo assim, inclusive para o GMail, só que nele a porta é 465 e não 25

[code]
package util;

import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**

  • Envia mensagem de email

*/
public class JavaMail {

String mensagemErro = "";
String usuario = "";
String senha = "";
String porta = "25"; // Default  - 465 se for Google
String protocolo = "smtp";// Default
String servidor = ""; 
String assunto = "";
String corpo = "";
String remetente = "";
String destinatario = "";
String usaSSL = "0";
String filename;

/**
 * EnviaEmail
 * 
 * @return
 */

public boolean enviaEmail() {

	mensagemErro = "";

	// Validação basica
	if (remetente.isEmpty()) {

		mensagemErro = "faltaRemetente";
		return false;
	}
	if (destinatario.isEmpty()) {
		mensagemErro = "faltaDestinatario";
		return false;
	}

	Properties propriedades = new Properties();
	propriedades.put("mail.smtp.auth", "true");
	propriedades.put("mail.smtp.port", porta);
	propriedades.put("mail.transport.protocol", protocolo);
	propriedades.put("mail.host", servidor);
	if (usaSSL.equals("1")) {
		propriedades.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
		propriedades.put("mail.smtp.socketFactory.fallback", "false");
	}

	Authenticator autenticador = new Authenticator() {
		protected PasswordAuthentication getPasswordAuthentication() {
			return new PasswordAuthentication(usuario, senha);
		}
	};

	Session session = Session.getInstance(propriedades, autenticador);
	MimeMessage mensagem = new MimeMessage(session);

	try {

		// Agora só é preciso adicionar estas informações na mensagem.

		mensagem.setFrom(new InternetAddress(remetente));

		mensagem.setSentDate(new Date());
		mensagem.setSubject(assunto);

                    // Corpo
		BodyPart messageBodyPart = new MimeBodyPart();

                    // Preenche o conteúdo da mensagem
		messageBodyPart.setContent(corpo, "text/html");

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

		// Anexos
		if (filename != null && filename.length() > 0) {
			messageBodyPart = new MimeBodyPart();
			DataSource source = new FileDataSource(filename);
			messageBodyPart.setDataHandler(new DataHandler(source));
			messageBodyPart.setFileName(filename);
			multipart.addBodyPart(messageBodyPart);
		}

		mensagem.setContent(multipart);

		// Para evitar o erro de separador inválido de email, uso porque inclui a opção de vários destinatários separados por ';' 
		if (destinatario.contains(";")) {
			destinatario = destinatario.replaceAll(";", ",");
		}

		InternetAddress[] destinatarios = InternetAddress.parse(destinatario, false);

		mensagem.setRecipients(Message.RecipientType.TO, destinatarios);
		Transport.send(mensagem);

		return true;
	} catch (AddressException e) {

		mensagemErro = e.getMessage();

	} catch (MessagingException e) {
		mensagemErro = e.getMessage();
	}

	return false;
}

// Getters e Setters omitidos

}[/code]

Teste:

		JavaMail jm = new JavaMail();
		
		jm.setAssunto("Assunto do email");
		
		jm.setServidor("smtp.gmail.com");
		jm.setProtocolo("smtp");
		jm.setDestinatario("usuario@gmail.com");
		jm.setSenha("senha");
		jm.setPorta("465");
		jm.setUsuario("usuario@gmail.com");
		jm.setUsaSSL("1"); 
		jm.setRemetente("dest@gmail.com");
		jm.setCorpo("Teste email");
		
		if(!jm.enviaEmail()) {
			System.out.println(jm.getMensagemErro());
		}