Envio de Email em Java: bibliotecas JavaMail e Simple Java Mail

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Envio de Email em Java: visão geral das bibliotecas e exemplos de código

\n\n

O envio de e-mails é uma das tarefas básicas em aplicações corporativas e web. No ecossistema Java, existem várias ferramentas consolidadas para trabalhar com o protocolo SMTP. Neste artigo, abordaremos duas bibliotecas principais: a padrão JavaMail (Jakarta Mail) e a mais moderna Simple Java Mail. Você aprenderá como configurar a conexão com um servidor SMTP, enviar um e-mail simples, adicionar marcação HTML e anexos.

\n\n

1. Jakarta Mail (anteriormente JavaMail API)

\n\n

Jakarta Mail (nome anterior — JavaMail API) é a especificação oficial para trabalhar com e-mail em Java. Ela faz parte do Jakarta EE e pode ser usada em qualquer projeto Java. Para conectar-se a um servidor SMTP, é necessário adicionar as dependências no pom.xml (Maven) ou build.gradle (Gradle).

\n\n

Adicionando a dependência (Maven)

\n
<dependency>\n    <groupId>com.sun.mail</groupId>\n    <artifactId>javax.mail</artifactId>\n    <version>1.6.2</version>\n</dependency>
\n\n

Exemplo: envio de e-mail de texto simples

\n
import javax.mail.*;\nimport javax.mail.internet.*;\nimport java.util.Properties;\n\npublic class EmailSender {\n    public static void main(String[] args) {\n        final String username = "your-email@gmail.com";\n        final String password = "your-app-password";\n\n        Properties props = new Properties();\n        props.put("mail.smtp.auth", "true");\n        props.put("mail.smtp.starttls.enable", "true");\n        props.put("mail.smtp.host", "smtp.gmail.com");\n        props.put("mail.smtp.port", "587");\n\n        Session session = Session.getInstance(props,\n            new Authenticator() {\n                @Override\n                protected PasswordAuthentication getPasswordAuthentication() {\n                    return new PasswordAuthentication(username, password);\n                }\n            });\n\n        try {\n            Message message = new MimeMessage(session);\n            message.setFrom(new InternetAddress(username));\n            message.setRecipients(Message.RecipientType.TO,\n                InternetAddress.parse("recipient@example.com"));\n            message.setSubject("E-mail de teste com Java");\n            message.setText("Olá! Este e-mail foi enviado usando a JavaMail API.");\n\n            Transport.send(message);\n            System.out.println("E-mail enviado com sucesso!");\n        } catch (MessagingException e) {\n            e.printStackTrace();\n        }\n    }\n}
\n\n
    \n
  • Properties — configurações SMTP: host, porta, autenticação, TLS.
  • \n
  • Session — sessão com o servidor, criada com um autenticador.
  • \n
  • MimeMessage — objeto do e-mail, onde são definidos remetente, destinatário, assunto e corpo.
  • \n
  • Transport.send() — envio do e-mail via SMTP.
  • \n
\n\n

Envio de e-mail HTML com anexo

\n
import javax.mail.*;\nimport javax.mail.internet.*;\nimport javax.activation.*;\n\npublic class HtmlEmailWithAttachment {\n    public static void main(String[] args) throws Exception {\n        Properties props = new Properties();\n        props.put("mail.smtp.auth", "true");\n        props.put("mail.smtp.starttls.enable", "true");\n        props.put("mail.smtp.host", "smtp.gmail.com");\n        props.put("mail.smtp.port", "587");\n\n        Session session = Session.getInstance(props, new Authenticator() {\n            @Override\n            protected PasswordAuthentication getPasswordAuthentication() {\n                return new PasswordAuthentication("your-email@gmail.com", "your-password");\n            }\n        });\n\n        MimeMessage message = new MimeMessage(session);\n        message.setFrom(new InternetAddress("your-                    

Recommendations