English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Envio de E-mail JSP

Embora seja fácil implementar a função de envio de e-mail usando JSP, é necessário o JavaMail API e o JavaBean Activation Framework.

  • Você pode baixar a versão mais recente do Java site: JavaMailabre a página da direita há um Downloads clique nele para baixar.

  • Você pode baixar a versão mais recente do Java site: JAF (versão 1.1.1).

Baixe e descomprima esses arquivos, no diretório raiz, você verá uma série de pacotes jar. Adicione os pacotes mail.jar e activation.jar à variável CLASSPATH.

Enviar um e-mail simples

Este exemplo mostra como enviar um e-mail simples a partir do seu computador. Ele pressupõe que o localhost já está conectado à rede e tem a capacidade de enviar um e-mail. Ao mesmo tempo, por favor, confirme novamente se os pacotes mail.jar e activation.jar foram adicionados à variável CLASSPATH.

<%@ page import="java.io."*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet."*,javax.activation.*"%>
<%@ page import="javax.servlet.http."*,javax.servlet.*"%>
<%
   String result;
   // E-mail do destinatário
   String to = "[email protected]";
   // E-mail do remetente
   String from = "[email protected]";
   // Supondo que você esteja enviando e-mail a partir do host local
   String host = "localhost";
   // Obter o objeto de propriedades do sistema
   Properties properties = System.getProperties();
   // Configurar o servidor de e-mail
   properties.setProperty("mail.smtp.host", host);
   // Obter o objeto Session padrão.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Criar um objeto MimeMessage padrão.
      MimeMessage message = new MimeMessage(mailSession);
      // Definir campo do cabeçalho From:
      message.setFrom(new InternetAddress(from));
      // Definir campo do cabeçalho To:
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Definir campo do cabeçalho Subject:
      message.setSubject("Esta é a Linha de Assunto!");
      // Agora a mensagem real configurada
      message.setText("This is actual message");
      // Enviar mensagem
      Transport.send(message);
      result = "Mensagem enviada com sucesso....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Erro: Não foi possível enviar a mensagem....";
   }
%>
<html>
<head>
<title>Enviar e-mail usando JSP</title>
</head>
<body>
<center>
<h1>Enviar E-mail usando JSP</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

Agora acesse http://localhost:8080/SendEmail.jsp, ele enviará um e-mail para [email protected] e mostrará o seguinte resultado:

Enviar e-mail usando JSP
Result: Mensagem enviada com sucesso....

Se desejar enviar e-mails para várias pessoas, os métodos listados a seguir podem ser usados para especificar vários endereços de e-mail:

void addRecipients(Message.RecipientType type, 
                   Address[] addresses)
throws MessagingException

A descrição dos parâmetros é a seguinte:

  • type: Este valor será configurado como TO (destinatário), CC ou BCC. CC significa Carbon Copy (cópia em anexo), BCC significa Blind Carbon Copy (cópia em anexo cega). O exemplo usado é TO.

  • addresses: Este é um array de endereços de e-mail, que precisa usar o método InternetAddress() ao especificar o endereço de e-mail.

Enviar um e-mail HTML

Este exemplo envia um e-mail HTML simples. Ele pressupõe que seu localhost já está conectado à rede e tem a capacidade de enviar e-mails. Ao mesmo tempo, por favor, confirme novamente se os pacotes mail.jar e activation.jar foram adicionados à variável CLASSPATH.

Este exemplo é muito semelhante ao anterior, mas neste exemplo usamos o método setContent(), passando "text/"html" como o segundo parâmetro passado, para indicar que a mensagem contém conteúdo HTML.

<%@ page import="java.io."*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet."*,javax.activation.*"%>
<%@ page import="javax.servlet.http."*,javax.servlet.*"%>
<%
   String result;
   // E-mail do destinatário
   String to = "[email protected]";
   // E-mail do remetente
   String from = "[email protected]";
   // Supondo que você esteja enviando e-mail a partir do host local
   String host = "localhost";
   // Obter o objeto de propriedades do sistema
   Properties properties = System.getProperties();
   // Configurar o servidor de e-mail
   properties.setProperty("mail.smtp.host", host);
   // Obter o objeto Session padrão.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Criar um objeto MimeMessage padrão.
      MimeMessage message = new MimeMessage(mailSession);
      // Definir campo do cabeçalho From:
      message.setFrom(new InternetAddress(from));
      // Definir campo do cabeçalho To:
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Definir campo do cabeçalho Subject:
      message.setSubject("Esta é a Linha de Assunto!");
     
      // Definir mensagem HTML
      message.setContent("<h1>This is actual message/h1">
                            "text/html");
      // Enviar mensagem
      Transport.send(message);
      result = "Mensagem enviada com sucesso....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Erro: Não foi possível enviar a mensagem....";
   }
%>
<html>
<head>
<title>Enviar E-mail HTML usando JSP</title>
</head>
<body>
<center>
<h1>Enviar E-mail usando JSP</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

Agora você pode tentar usar o arquivo JSP acima para enviar e-mails com mensagens HTML.

Incluir anexos no e-mail

Este exemplo nos mostra como enviar um e-mail com anexos.

<%@ page import="java.io."*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet."*,javax.activation.*"%>
<%@ page import="javax.servlet.http."*,javax.servlet.*"%>
<%
   String result;
   // E-mail do destinatário
   String to = "[email protected]";
   // E-mail do remetente
   String from = "[email protected]";
   // Supondo que você esteja enviando e-mail a partir do host local
   String host = "localhost";
   // Obter o objeto de propriedades do sistema
   Properties properties = System.getProperties();
   // Configurar o servidor de e-mail
   properties.setProperty("mail.smtp.host", host);
   // Obter o objeto Session padrão.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Criar um objeto MimeMessage padrão.
      MimeMessage message = new MimeMessage(mailSession);
      // Definir campo do cabeçalho From:
      message.setFrom(new InternetAddress(from));
      // Definir campo do cabeçalho To:
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Definir campo do cabeçalho Subject:
      message.setSubject("Esta é a Linha de Assunto!");
      // Criar parte da mensagem
      BodyPart messageBodyPart = new MimeBodyPart();
      // Preencher mensagem
      messageBodyPart.setText("Esta é o corpo da mensagem");
      
      // Criar mensagem multimídia
      Multipart multipart = new MimeMultipart();
      // Definir parte da mensagem de texto
      multipart.addBodyPart(messageBodyPart);
      // Parte do anexo
      messageBodyPart = new MimeBodyPart();
      String filename = "file.txt";
      DataSource source = new FileDataSource(filename);
      messageBodyPart.setDataHandler(new DataHandler(source));
      messageBodyPart.setFileName(filename);
      multipart.addBodyPart(messageBodyPart);
      // Enviar mensagem completa
      message.setContent(multipart);
      // Enviar mensagem
      Transport.send(message);
      String title = "Enviar Email";
      result = "Mensagem enviada com sucesso....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Erro: Não foi possível enviar a mensagem....";
   }
%>
<html>
<head>
<title>Enviar Anexo de Email usando JSP</title>
</head>
<body>
<center>
<h1>Enviar E-mail com Anexo usando JSP</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

Parte de Autenticação de Usuário

Se o servidor de e-mail precisar de nome de usuário e senha para autenticação de usuário, pode ser configurado da seguinte forma:

 properties.setProperty("mail.user", "myuser");
 properties.setProperty("mail.password", "mypwd");

Enviar e-mail usando formulário

Receba um e-mail usando um formulário HTML e obtenha todas as informações do objeto request:

String to = request.getParameter("to");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");

Após obter essas informações, você pode usar os exemplos mencionados anteriormente para enviar e-mails.