Embora seja muito simples usar JSP para enviar e-mails, requer a instalação da API JavaMail e do JavaBean Activation Framework.
Baixe a versão mais recente do JavaMail aqui.
Baixe a versão mais recente do JavaBeans Activation Framework (JAF) aqui.
Baixe e descompacte esses arquivos. No diretório raiz, você verá uma série de pacotes jar. Adicione o pacote mail.jar e o pacote activate.jar à variável CLASSPATH.
Este exemplo mostra como enviar um e-mail simples de sua máquina. Ele pressupõe que o localhost esteja conectado à rede e tenha a capacidade de enviar um email. Ao mesmo tempo, confirme novamente se o pacote mail.jar e o pacote activate.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; // Email do destinatário String to = "[email protected]" // Enviar email do remetente String from; = "[email protected]"; // Suponha que você esteja enviando e-mail do host local String host = "localhost" // Obtenha o objeto de propriedades do sistema Properties = System.getProperties(); ( "mail.smtp.host", host); // Obtenha o objeto Session padrão. Sessão mailSession = Session.getDefaultInstance(properties); try{ // Cria um objeto MimeMessage padrão. MimeMessage message = new MimeMessage(mailSession); // Definir o campo de cabeçalho do cabeçalho From: message.setFrom(new InternetAddress(from)); // Definir o campo de cabeçalho do cabeçalho To: message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); // Definir Assunto: campo de cabeçalho message.setSubject("Esta é a Linha de Assunto!"); Agora defina a mensagem real message.setText("Esta é a mensagem real"); // Enviar mensagem Transport.send(message); resultado = "Mensagem enviada com sucesso...."; (); resultado = "Erro: não foi possível enviar 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("Resultado: " + resultado + "n"); %></p></body></html>
Agora visite http://localhost:8080/SendEmail.jsp, ele enviará um email para [email protected] e exibirá os seguintes resultados:
Enviar e-mail usando JSPResult: mensagem enviada com sucesso....Se você quiser enviar um e-mail para várias pessoas, os métodos listados abaixo podem ser usados para especificar vários endereços de e-mail:
void addRecipients (tipo Message.RecipientType, endereços Address[]) lança MessagingExceptionOs parâmetros são descritos a seguir:
tipo: este valor será definido como TO, CC ou BCC. CC significa cópia, BCC significa cópia em preto e TO é usado no programa de exemplo.
endereços: Este é um array de endereços de e-mail. Ao especificar um endereço de e-mail, você precisa usar o método InternetAddress().
Este exemplo envia um email HTML simples. Ele pressupõe que seu host local esteja conectado à rede e tenha a capacidade de enviar e-mails. Ao mesmo tempo, confirme novamente se o pacote mail.jar e o pacote activate.jar foram adicionados à variável CLASSPATH.
Este exemplo é muito semelhante ao exemplo anterior, mas neste exemplo usamos o método setContent() e passamos "text/html" como segundo parâmetro 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; // Email do destinatário String to = "[email protected]" // Enviar email do remetente String from; = "[email protected]"; // Suponha que você esteja enviando e-mail do host local String host = "localhost" // Obtenha o objeto de propriedades do sistema Properties = System.getProperties(); ( "mail.smtp.host", host); // Obtenha o objeto Session padrão. Sessão mailSession = Session.getDefaultInstance(properties); try{ // Cria um objeto MimeMessage padrão. MimeMessage message = new MimeMessage(mailSession); // Definir o campo de cabeçalho do cabeçalho From: message.setFrom(new InternetAddress(from)); // Definir o campo de cabeçalho do cabeçalho To: message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); // Definir Assunto: campo de cabeçalho message.setSubject("Esta é a Linha de Assunto!"); Definir mensagem HTML message.setContent("<h1>Esta é a mensagem real</h1>","text/html" ); // Enviar mensagem Transport.send(message); ; }catch (MessagingException mex) { mex.printStackTrace(); resultado = "Erro: não foi possível enviar mensagem..."; JSP</title></head><body><center><h1>Enviar e-mail usando JSP</h1></center><p align="center"><% out.println("Resultado: " + resultado + "n"); %></p></body></html>
Agora você pode tentar usar o arquivo JSP acima para enviar mensagens HTML para e-mail.
Este exemplo nos mostra como enviar um email contendo um anexo.
<%@ 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]" // Enviar e-mail do remetente String de; = "[email protected]"; // Suponha que você esteja enviando e-mail do host local String host = "localhost" // Obtenha o objeto de propriedades do sistema Properties = System.getProperties(); ( "mail.smtp.host", host); // Obtenha o objeto Session padrão. Sessão mailSession = Session.getDefaultInstance(properties); try{ // Cria um objeto MimeMessage padrão. MimeMessage message = new MimeMessage(mailSession); // Definir o campo de cabeçalho do cabeçalho From: message.setFrom(new InternetAddress(from)); // Definir o campo de cabeçalho do cabeçalho To: message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); //Definir o campo Assunto: header message.setSubject("Esta é a linha de assunto!"); messageBodyPart = new MimeBodyPart(); // Preencha a mensagem messageBodyPart.setText("Este é o corpo da mensagem"); // Crie uma mensagem multimídia Multipart multipart = new MimeMultipart(); messageBodyPart); // Parte do anexo messageBodyPart = new MimeBodyPart(); new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); .send (mensagem); String title = "Enviar e-mail"; resultado = "Mensagem enviada com sucesso...."; (MessagingException mex) { mex.printStackTrace(); resultado = "Erro: não foi possível enviar mensagem...." } %><html><head><title>Enviar e-mail anexo usando JSP</title></head ><body><center><h1>Enviar email de anexo usando JSP</h1></center><p align="center"><% out.println("Resultado: " + resultado + "n"); %></p></corpo></html>
Se o servidor de e-mail exigir um nome de usuário e uma senha para autenticação do usuário, ele poderá ser definido da seguinte forma:
props.setProperty("mail.user", "meuusuário"); props.setProperty("mail.senha", "meupwd");Use um formulário HTML para receber um email e obter todas as informações do email através do objeto request:
String to = request.getParameter("to");String from = request.getParameter("from");String subject = request.getParameter("subject");String messageText = request.getParameter("body");Depois de ter as informações acima, você pode enviar o e-mail usando o exemplo mencionado anteriormente.