Nesse post eu vou mostrar como enviar email com a API JavaMail.
Neste post será usado o servidor de aplicação JBoss 6 – como instalar o jboss e como instalar o jboss no eclipse
Vamos lá, primeiro vamos criar um projeto web – clique aqui e veja como criar um projeto web
Crie um Dinamic Web Project chamado javamail
Vamos criar a nossa classe que irá implementar as funcionalidades de enviar email da API JavaMail
Crie um classe no pacote br.com.mail chamada Email e digite o código abaixo:
package br.com.mail; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class Email { //Método que envia o email public static void enviaEmail( String remetente, String destinatario, String assunto, String mensagem){ Session session = Session.getDefaultInstance(getPropriedades(), getAuthenticator()); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(remetente)); //Seta o remetente message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(destinatario)); //Define o destinatário message.setSubject(assunto); //Define o assunto message.setText(mensagem); //Mensagem do email Transport.send(message); //Envia o email } catch (MessagingException e) { throw new RuntimeException(e); } } //Método que retorna a autenticação de sua conta de email public static Authenticator getAuthenticator(){ Authenticator autenticacao = new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { //Preencha com seu email e com sua senha return new PasswordAuthentication("seuemail@gmail.com", "suasenha"); } }; return autenticacao; } //Método que retorna as propriedades de configuração do servidor de email public static Properties getPropriedades(){ Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); //SMTP do seu servidor de email props.put("mail.smtp.socketFactory.port", "465"); //Porta do servidor smtp props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); //Define a conexão do tipo SSL props.put("mail.smtp.auth", "true"); //Define que é necessário autenticação props.put("mail.smtp.port", "465"); //Porta do seu servidor smtp return props; } }
Crie uma página HTML chamada email.html e digite o código abaixo:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Tutorial Java Mail</title> </head> <body> <h2> TUTORIAL JAVA MAIL </h2> <hr/> <form action="EnviaEmailServlet" method="post"> DE: <input type="text" name="remetente" /> <br/> PARA: <input type="text" name="destinatario" /> <br/> ASSUNTO: <input type="text" name="assunto" /> <br/> MENSAGEM: <textarea name="mensagem" rows="10" cols="40" > </textarea> <br/> <input type="submit" value="Enviar" /> </form> </body> </html>
A página html acima, passará os dados dos campos para o Servlet EnviaEmailServlet que criaremos logo a seguir.
Agora crie um Servlet no pacote br.com.servlets chamado EnviaEmailServlet e digite o código abaixo:
package br.com.servlets; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.mail.Email; @WebServlet("/EnviaEmailServlet") public class EnviaEmailServlet extends HttpServlet { private static final long serialVersionUID = 1L; public EnviaEmailServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* * Recupera os dados da página html */ String remetente = request.getParameter("remetente"); String destinatario = request.getParameter("destinatario"); String assunto = request.getParameter("assunto"); String mensagem = request.getParameter("mensagem"); //Chama o método que envia email Email.enviaEmail(remetente, destinatario, assunto, mensagem); } }
O Servlet acima apenas chama o nosso método de enviar email com os dados passados pela página email.html.
Pronto. Agora é só executar a sua aplicação e abrir a página email.html digitando http://localhost:8080/javamail/email.html.
Basta preencher os campos e clicar no botão enviar.
Bom é isso.
Até o próximo post.
Parabéns pelo tutorial.
Opa andré.
Obrigado.
Que bom que gostou.
Até +.
Pô ficou muito bom esse tutorial.
Parabéns pelo tutorial ai.
Abraço
Opa Ariel.
Que bom que gostou.
Até +.
Muito bom, poucas linhas de código, limpinho e bem simples mas para quem usa como servidor Apache Tomcat 6.32 consegue usar o seu exemplo?
Obrigado Oscar.
Que bom que gostou.
A única diferença é que você terá que adicionar os jars da API JavaMail no seu projeto.
Até +
Bruno só não consigo saber o porque de não ter referencia a esta anotação: @WebServlet(“/EnviaEmailServlet”) sabes como ajudar?
Das opções só tenho @WebService.
Você está usando o JBoss 6?
Essa anotação é nova do JEE 6, seu container precisa ter suporte ao JEE 6
Até +
Muito bom esse tutorial. Vou passar para uma galera que está estudando Java. Será muito útil.
Obrigado Anderson.
Que bom que gostou.
Tomara que seja útil pra comunidade.
Até +.
Com certeza será…com certeza!
Fico feliz hehe.
Parabéns companheiro.
Opa obrigado.
Até +.
Oi,
legal o post.
Não seria melhor vc disponibilizar um projeto funcionando no http://github.com ?
Seria bem mais didático.
Opa obrigado.
Assim que eu chegar em casa eu coloco o código fonte do projeto em algum repositório online.
Obrigado pela dica.
Até +
Muito Bom! Bem objetivo! Gostei!
Obrigado Márcio.
Que bom que gostou.
Até +
Olá Bruno, parabéns pelo blog.
Vi que tirou a certifiação SCJP 6 . Estou estudando bastante, mais não consigo achar uns simulados legais. Vc teria ai alguns para me passar? Desde já agradeço.
thiagocastanhari@gmail.com
Bom dia Thiago
Que bom que gostou do blog.
Bom tem 2 simulados gratuitos bem bacana, é o Inquistion e o ExamLabs(Esse muitoo mais dificil que a prova).
Não sei se você comprou o livro SCJP 6 da kathy sierra, nele vem um simulado bem bacana também.
Caso você queira gastar uma graninha hehe, o Whizlabs é muito bom, e uma semana antes da prova, eu aconselho você fazer o simulado Test Killer, pois ele é bem parecido com a prova, porém esse não é gratuito.
Os gratuitos é só procurar no google ou 4shared que você deve achar, eu não tenho mais eles no pc.
Espero ter ajudado.
Até +
Olá, ficou realmente legal o blog, mas ficaria mais completo se desse dicas de configuração da API na lib do projeto.
Bom dia Evaldo.
Então, utilizando o JBoss vc não precisa configurar lib nenhuma, se for o caso de conseguir instalar o jboss no eclipse e configurar um projeto com o jboss, tem outro post que mostra como fazer isso.
Até +.
Bruno, boa tarde.
Estou ainda em aprendizado na área de desenvolvimento e gostaria de uma ajuda:
Estou usando o servidor Tomcat, então o que fiz, já foi colocar os “.jar” do “mail” na minha pasta lib.
Fiz também todo os procedimentos corretos e o código está igual ao seu (estou usando também o gmail como teste, mas sei que posso pegar as informações de outro servidor de e-mail para fazer tal processo.)
Mas, não funcionou.
O que posso fazer pra realizar outros testes?
Não enviou e-mail algum.
No mais, estou entendo o conceito do java mail e fazendo mais alguns testes deve ser possível usar da forma como preciso.
Jean, no caso eu teria que testar com o tomcat aqui pra ver se tem algum problema com o código que eu fiz, creio eu que não tenha, as vezes pode ser a versão do javamail que você colocou, tudo isso pode influenciar.
Eu conheci uma api pra enviar email da apache, que facilita nossa vida para enviar email.
Eu criei um post, de uma olhada http://www.brunorota.com.br/blog/tutorial-commons-email/
Valeww
Bruno, primeiramente parabéns pelo tutorial que está funcionando certinho. Mas meu ´
problema é que tenho um formulário de contato (Nome, Email, Assunto e Messagem) e no
lugar do “DE” no caso remetente quero que a pessoa entre apenas com o nome dele, o Email
seje o Email do usuário. Tem alguma idéia como adaptar isso a esse seu modelo ou tenho que
tentar outras formas.
Obrigado e parabéns pelo BLOG e sucessos..
Opa Ivoney, obrigado.
Então, não entendi a sua dúvida, no lugar do remetente você deseja que apenas apareça o nome da pessoa em vez do email?
Abraços
Olá Bruno, bem isso. Idêntico a esse formulário de contato na qual estou enviando pra você.
Seu exemplo esta funcionando direitinho. Mas quando vou enviar ele funciona como se fosse
eu tivesse enviando o email pra mim mesmo, entendeu ??? Obrigado
Abraços
Entendi, então Ivoney, eu não me lembro de ter feito algo do tipo, talvez não seja possível no Remetente você setar o email do usuário, tem que pesquisar, o que nós fazemos bastante é no titulo, ou no corpo do email, setar os dados que o contato escreveu.
Caso encontre o que você precisa, compartilhe conosco =)
Abraços
realmente, creio eu que não é possível, pois se fosse poderia ocorrer muitas fraudes, porquê pense, eu poderia enviar email para pessoas através de email de outras pessoas, não faz sentido. O problema de você enviar email pra você mesmo, é que normalmente o email que você configura para enviar, não é o mesmo que você configura para receber, então não fica esse “problema” de enviar email para você mesmo.
Tudo bem Bruno, desde já agradeço pela sua disponibilidade e realmente esse método
poderia sim ocorrer fraudes. Vou tentar outros métodos e assim que consiga postarei também
pra ajudar outros colegas profissionais.
Abraços e Sucessos !!!
Opa é isso ae
Abraços