Problemas com JavaMail

9 respostas
V

Exixte algum erro nessa implementacao?
Pq num to conseguindo enviar email para o Gmail e nem para outro email;

public void EnviarMensagem() {
	
	
	de ="[email removido]";
	para = "[email removido]";
	assunto = "assunto";
	mensagem = "mmensagem";
	
	Properties props = new Properties();
    
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.auth", "true");
    Session session = Session.getDefaultInstance(props,null); 
    session.setDebug(true);
    
    Message msg = new MimeMessage(session);
    try {
      msg.setRecipient(Message.RecipientType.TO,new InternetAddress(para));
      msg.setFrom(new InternetAddress(de));
      msg.setSubject(assunto);
      msg.setText(mensagem);

      // Envia mensagem.
      Transport.send(msg);
    } catch (MessagingException e) {
     System.out.println("ERRO = "+e.getMessage());}
}

Ja tive erro com STARTTLS, o q é isso?
Para o Gmail precisa autenticar?

9 Respostas

D

eu tenho uma implementação parecido com essa…

a diferença é que sempre uso autenticação (login e senha)…

já testou enviar e-mail com autenticação???

t+

T

aqui vai um codigo de autenticação

public class SMTPAutenticador extends Authenticator {
    
    private static final String user = "joselito"; 
    private static  final String password = "123abc";
    private static final PasswordAuthentication rfPasswordAuthentication = new PasswordAuthentication(user, password);
    public static final SMTPAutenticador rfAutenticador = new SMTPAutenticador();
    private SMTPAutenticador (){    }
    
    public PasswordAuthentication getPasswordAuthentication()    {
        return rfPasswordAuthentication;
    }
    
    

       
}
V
Session session = Session.getDefaultInstance(props,new Authenticator() {

        protected PasswordAuthentication getPasswordAuthentication() {

            return new PasswordAuthentication( "[email removido]", "senha" );}}
    );

usei isso para tentar autenticar mas deu esses erros

DEBUG: setDebug: JavaMail version 1.4ea
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.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 i20sm10452834wxd
DEBUG SMTP: connected to host "smtp.gmail.com", port: 25

EHLO organiza
250-mx.google.com at your service, [200.216.156.232]
250-SIZE 20971520
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
DEBUG SMTP: Found extension "SIZE", arg "20971520"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:<[email removido]>
530 5.7.0 Must issue a STARTTLS command first i20sm10452834wxd
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first i20sm10452834wxd

	at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
	at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
	at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
	at javax.mail.Transport.send0(Transport.java:169)
	at javax.mail.Transport.send(Transport.java:98)
	at TrataEnvioRecebimento.Envio.EnviarMensagem(Envio.java:60)
	at telas.Principal.actionPerformed(Principal.java:328)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
	at java.awt.Component.processMouseEvent(Component.java:5488)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
	at java.awt.Component.processEvent(Component.java:5253)
	at java.awt.Container.processEvent(Container.java:1966)
	at java.awt.Component.dispatchEventImpl(Component.java:3955)
	at java.awt.Container.dispatchEventImpl(Container.java:2024)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
	at java.awt.Container.dispatchEventImpl(Container.java:2010)
	at java.awt.Window.dispatchEventImpl(Window.java:1774)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
QUIT
221 Closing connection. Good bye.
ERRO = 530 5.7.0 Must issue a STARTTLS command first i20sm10452834wxd
V

vou tentar usar essa autenticacao

V
props.put("mail.smtp.starttls.enable","true");

coloquei isso no codigo
acabou com os erros em cima
mas agora ta falando q to enviando uma mensagem protegida.
ai da erro e num envia o email
alguem sabe o q faco agora?

V
props.put("mail.smtp.starttls.enable","true");

coloquei isso no codigo
acabou com os erros em cima
mas agora ta falando q to enviando uma mensagem protegida.
ai da erro e num envia o email
alguem sabe o q faco agora?

M

tente assim:

props.put("mail.smtp.auth", "true"); message.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host, usuario, senha); transport.sendMessage(message, message.getAllRecipients()); transport.close();

:okok:

V

marcossousa
cara sua implementacao quase funcionou mas deu um pequeno erro no meu ip

550 <unknown[111.222.33.44]>: Client host rejected: Access denied. Invalid network.
deu o erro acima, será que é q eu uso net discada?
o ip eu troquei né

M

ué,

acho que o gmail tem uma porta específica para envio. Tente colocar:

p.put("mail.smtp.port", "465");

:okok:

Criado 12 de março de 2007
Ultima resposta 16 de mar. de 2007
Respostas 9
Participantes 4