Envio de Email em Java: visão geral das bibliotecas e exemplos de código
\n\nO 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\n1. Jakarta Mail (anteriormente JavaMail API)
\n\nJakarta 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).
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\nExemplo: envio de e-mail de texto simples
\nimport 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
Envio de e-mail HTML com anexo
\nimport 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- Também na biblioteca
Métricas do Prometheus em Go (Golang): guia completo de monitoramento
Testes em Swift (iOS/macOS): frameworks e ferramentas
Aprendizado de Máquina em Java: visão geral das bibliotecas para desenvolvimento de modelos
ORM para Go (Golang): comparação e exemplos de bibliotecas populares