English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
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.
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>
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");
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.