Nao estou conseguindo enviar Email usando java

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.sender@gmail.com";
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);
}

vc tem autenticacao de 2 fatores na conta?

1 curtida

Nao, a conta e completamente nova, criei hoje

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);
2 curtidas

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

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

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 = "meuemail@gmail.com";
        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);
        }
    }
}
1 curtida

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

1 curtida

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

2 curtidas