Home   Java   Aplicativo java web para enviar email

Aplicativo java web para enviar email
enviar email

Aplicativo java web para enviar email

Olá Amigos, hoje vamos criar um aplicativo java web para enviar emails. Utilizaremos a API básica do Java chamada JavaMail e o como provedor de serviço de e-mail o Gmail.
Teremos uma página web onde o usuário preencherá os dados necessários para um e-mail, um Servlet que receberá os dados e processará a comunicação com o Servidor Gmail e nos informará sobre o sucesso ou erro no envio do e-mail.

Mãos à obra.

enviar email

Tecnologias utilizadas

  1. Java 7
  2. Eclipse Luna
  3. Tomcat 8
  4. Java Mail 1.5

Crie um novo projeto Web


Adicione os arquivos abaixo na pasta “lib” do seu projeto.

  • dsn.jar
  • gimap.jar
  • imap.jar
  • mailapi.jar
  • pop3.jar
  • smtp.jar

Esses arquivos estão disponíveis para download aqui

Hora da criação dos componentes do projeto

Vamos criar a classe de entidade que terá as propriedades para envio do email:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
package br.com.feltex.email;
 
import java.io.Serializable;
 
public class Email implements Serializable {
 
	private static final long serialVersionUID = 8928827540810848202L;
 
	private String para;
 
	private String corpo;
 
	private String de;
 
	private String titulo;
 
	private String senha;
 
	public String getCorpo() {
		return corpo;
	}
 
	public String getDe() {
		return de;
	}
 
	public String getPara() {
		return para;
	}
 
	public String getSenha() {
		return senha;
	}
 
	public String getTitulo() {
		return titulo;
	}
 
	public void setCorpo(String corpo) {
		this.corpo = corpo;
	}
 
	public void setDe(String de) {
		this.de = de;
	}
 
	public void setPara(String para) {
		this.para = para;
	}
 
	public void setSenha(String senha) {
		this.senha = senha;
	}
 
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}
 
	public String toString() {
		return "Email [para=" + para + ", corpo=" + corpo + ", de=" + de
				+ ", titulo=" + titulo + ", senha=" + senha + "]";
	}		
}

Abaixo temos a classe Acesso que é responsável por criar um objeto do tipo PasswordAuthentication dá um suporte de dados que é usado pelo autenticador em servidores. É simplesmente um repositório para um nome de usuário e uma senha.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package br.com.feltex.email;
 
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
 
public class Acesso extends Authenticator {
 
	private String usuario = "";
	private String senha = "";
 
	public Acesso() {}
 
	public Acesso(String usuario, String senha) {
		this.usuario = usuario;
		this.senha = senha;
	}
 
	protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(usuario, senha);
	}
 
	public String getSenha() {
		return senha;
	}
	public String getUsuario() {
		return usuario;
	}
}

Abaixo temos a classe que envia o e-mail propriamente dito.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
package br.com.feltex.email;
 
import java.util.Properties;
 
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 
public class EnviaEmail {
 
	public void enviar(Email email) throws Exception {
		System.out.println("Inicio do programa");
 
		//Configuração para envio de E-mail via GMail		
		Properties props = new Properties();
		props.setProperty("mail.smtp.host", "smtp.gmail.com");
		props.setProperty("mail.smtp.socketFactory.class",
				"javax.net.ssl.SSLSocketFactory");
		props.setProperty("mail.smtp.socketFactory.fallback", "false");
		props.setProperty("mail.smtp.port", "465");
		props.setProperty("mail.smtp.socketFactory.port", "465");
		props.put("mail.smtp.auth", "true");
		props.put("mail.debug", "true");
		props.put("mail.store.protocol", "pop3");
		props.put("mail.transport.protocol", "smtp");
 
		Session session = Session.getInstance(props, new Acesso(email.getDe(),
				email.getSenha()));
 
		session.setDebug(true);
 
		Message message = new MimeMessage(session);
		message.setFrom(new InternetAddress(email.getDe()));
		message.setRecipients(Message.RecipientType.TO,
				InternetAddress.parse(email.getPara()));
		message.setSubject(email.getTitulo());
		message.setText(email.getCorpo());
 
		Transport.send(message);
		System.out.println("Concluído");
	}
}

Por fim temos o servlet que recebe os dados digitados pelo usuário e se encarrega de criar as instâncias das classes necessárias para realizar o envio do e-mail.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package br.com.feltex.email;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class EmailServlet
 */
@WebServlet("/EmailServlet")
public class EmailServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
 
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
 
 
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
 
		PrintWriter out = response.getWriter();
		try {
			Email e = new Email();
			e.setDe(request.getParameter("txtDe"));
			e.setPara(request.getParameter("txtPara"));
			e.setSenha(request.getParameter("txtSenha"));
			e.setTitulo(request.getParameter("txtTitulo"));
			e.setCorpo(request.getParameter("txtCorpo"));
 
			EnviaEmail envio = new EnviaEmail();
			envio.enviar(e);
 
			out.append("<H1>Mensagem enviado com Sucesso! </H1>");
		} catch (Exception e) {
			e.printStackTrace();			
			out.append("<H1>Erro no envio da mensagem! </H1>");			
			out.append(e.getMessage());
		}
	}
}

Teremos a página de entrada dos sistema com os campos que compõem um email. Ela deve ser nomeada como index.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Funcionalidades</title>
</head>
<body>
	<div align="center">
		<form name="frmEmail" action="EmailServlet" method="post">
			De:<input name="txtDe" size="30"><br> Para:<input
				name="txtPara" size="30"><br> Titulo:<input
				name="txtTitulo" size="30"><br> Senha:<input
				type="password" name="txtSenha" size="20"><br>
			<textarea name="txtCorpo" rows="20" cols="80"></textarea>
 
			<input type="submit" value="enviar">
		</form>
	</div>
	<a href="http://www.feltex.com.br/felix/" target="_blank">www.feltex.com.br</a>
</body>
</html>

Conclusão


A API JavaMail é útil sempre que desejamos enviar e-mail através do Java sem a utilização de um Serviço no servidor. Essa abordagem pode ser utilizada tanto em projeto Web como projeto JSE (Desktop). Além de utilizar os serviços do GMail podemos fazer as configurações para qualquer outro serviço como (Hotmail, Yahoo, UOL ou Glogo.com). Fique à vontade para exercitar essas execuções.
Você pode baixar o exemplo completo neste link

Links relacionados

Configuração do Eclipse
Instalação e configuração do Servidor TOMCAT

Não esqueça de curtir este post nas rede sociais. Dê a sua contribuição social e ajude o autor:

Deixe uma resposta

Get Best Services from Our Business.