Pergunta

Eu estou usando a biblioteca Apache Commons e-mail para enviar e-mails, mas eu não sou capaz de enviá-los através do servidor SMTP do Gmail.
Alguém pode fornecer código de exemplo que funciona com o servidor SMTP do Gmail e outros?

Eu estou usando o seguinte código que não funciona:

String[] recipients = {"receiver@gmail.com"};

SimpleEmail email = new SimpleEmail();
email.setHostName("smtp.gmail.com");
email.setAuthentication("sender@gmail.com", "mypasswd");
email.setDebug(true);
email.setSmtpPort(465);

for (int i = 0; i < recipients.length; i++)
{
    email.addTo(recipients[i]);
}

email.setFrom("sender@gmail.com", "Me");
email.setSubject("Test message");
email.setMsg("This is a simple test of commons-email");
email.send();
Foi útil?

Solução

O envio de e-mails para o servidor SMTP do Gmail requer autenticação e SSL. O nome de usuário e senha é bastante simples. Certifique-se de ter as seguintes propriedades definidas para ativar a autenticação e SSL e ele deve funcionar.

mail.smtp.auth=true
mail.smtp.starttls.enable=true

Para o código de exemplo adicione o seguinte ao TLS habilitado.

Para API-versões <1.3 uso:
email.setTSL(true);
o método está obsoleto para versões> = 1,3, e em vez disso você deve usar: email.setStartTLSEnabled(true);

Outras dicas

Veja abaixo um código que funciona. Obviamente, você tem que adicionar o jar apache a caminho de criação do projeto.

public static void sendSimpleMail() throws Exception {
    Email email = new SimpleEmail();
    email.setSmtpPort(587);
    email.setAuthenticator(new DefaultAuthenticator("your gmail username",
            "your gmail password"));
    email.setDebug(false);
    email.setHostName("smtp.gmail.com");
    email.setFrom("me@gmail.com");
    email.setSubject("Hi");
    email.setMsg("This is a test mail ... :-)");
    email.addTo("you@gmail.com");
    email.setTLS(true);
    email.send();
    System.out.println("Mail sent!");
}

Saudações, Sergiu

Usando commons.email funcionou para mim.

HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSmtpPort(465);
email.setSSL(true);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top