Nao estou conseguindo enviar Email usando java

9 respostas Resolvido
java
RD_Ramos

Estou tentando criar um projeto para ajudar meu pai no trabalho dele, mais para isso, preciso enviar Emails com um item anexado. Para começar eu resovi mandar um simples Email, porem todas vez que eu tento da esse erro.

“org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465”, eu tentei desativar o “Acesso a app menos seguro” na conta do google que eu criei, porem fala la que nao e possivel mais desativa. Alguem consegue me ajudar?

String Email = "[email removido]";
String Senha = "Email.sender.password";
        
SimpleEmail mail = new SimpleEmail();
mail.setHostName("smtp.gmail.com");
mail.setSmtpPort(465);
mail.setAuthentication(Email, Senha);
mail.setSSLOnConnect(true);
    
try {
    mail.setFrom(Email);
    mail.addTo(Email);
    mail.setSubject("Teste");
    mail.setMsg("Mensage");
    mail.send();
} catch (Exception e) {
    System.out.println(e);
}

9 Respostas

rodriguesabner

vc tem autenticacao de 2 fatores na conta?

RD_Ramos

Nao, a conta e completamente nova, criei hoje

rodriguesabner

ah sim, acessei aqui agora tbm pra ver como é…

Tente desse jeito então:

Clica em gerenciar sua conta do Google


Depois clica em Segurança


scrola um pouco pra baixo até achar esse Senhas de app e clica nele


vai abrir uma tela e aí clica em “Selecionar app” e escolhe Outro, coloca qualquer nome e avança


vai ser gerado uma senha pra vc, copia esse senha que tá no campo amarelo e coloca ela no lugar da sua senha no seu programa


Exemplo:

mail.setAuthentication(seuEmail, colaASenhaGeradaAqui);
RD_Ramos

Obrigando, realmente funcionou, porem eles estão parando na caixa de spam, tem como fazer eles não pararem la?

rodriguesabner

Não sei, talvez por a conta ser muito nova possa ser um motivo. Pode mostrar como ficou o email que chegou pra vc? pode ser um print

RD_Ramos

rodriguesabner
Solucao aceita

Cara, eu fiz um envio aqui e deu certo, não foi pra o SPAM… Vou deixar o código, aí vc testa pra ver se vai rolar.

Usei o gradle e importei essa lib:

implementation 'com.sun.mail:javax.mail:1.6.2'

Se você estiver usando maven:

<!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail -->
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

Se estiver importando manualmente o arquivo .jar

Clica nesse link pra baixar:
https://repo1.maven.org/maven2/com/sun/mail/javax.mail/1.6.2/javax.mail-1.6.2.jar


import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Properties;

public class Main {

    public static void main(String[] args) {
        new Main().sendMail();
    }

    private void sendMail() {
        Properties properties = System.getProperties();

        String host = "smtp.gmail.com";
        String email = "[email removido]";
        String password = "minhasenha";


        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", "465");
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");

        Session session = Session.getDefaultInstance(properties, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(email, password);
            }
        });

        session.setDebug(true);

        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(email, "Abner Rodrigues"));
            //o segundo parametro após o email é o nome do remetente,
            //vc pode customizar pra ficar tipo: Empresa xxx

            message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
            message.setSubject("Fala Abner, bora trabalhar?");
            message.setText("Lê essa msg maneira aqui...");

            System.out.println("enviando...");
            Transport.send(message);
            System.out.println("Email enviado com sucesso...");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
    }
}
RD_Ramos

Eu fiz refiz o seu codigo porem continua parando na caixa de spam, mas não tem problema, o importante e o email chegar, talvez seja mesmo por o email ser novo, mais tarde ele deve parar de ir parar na caixa de spam

rodriguesabner

po q droga… Beleza então, qlqer coisa tenta com o seu email pessoal pra ver se vai cair no spam tb

Criado 23 de julho de 2022
Ultima resposta 23 de jul. de 2022
Respostas 9
Participantes 2