Olá! Seguindo um exemplo que se não estou enganado, peguei aqui mesmo no fórum, criei uma classe em java que é chamada por um jsp para enviar um email de recuperação de senha. Segue abaixo os códigos
Email.Java
[code]package Email;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Email {
public String sendMail (String mailServer, String subject,String to,String from, String mensagem)throws AddressException, MessagingException {
Properties props = System.getProperties();
/*props.put("mail.smtp.host", mailServer);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "587");*/
//testes
props.put ("mail.smtp.host",mailServer);
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
props.put("mail.smtp.debug", "true");
props.put("mail.mime.charset", "ISO-8859-1");
props.put("mail.smtp.port", "465");
props.put ("mail.smtp.starttls.enable", "true");
props.put ("mail.smtp.socketFactory.port", "465");
props.put ("mail.smtp.socketFactory.fallback", "false");
props.put ("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
Session session = Session.getDefaultInstance(props);//recebe props
InternetAddress destinatario = new InternetAddress (to);
InternetAddress remetente = new InternetAddress (from);
Message msg = new MimeMessage(session);
msg.setSentDate(new Date());//novo
msg.setFrom(remetente);
msg.setRecipient( Message.RecipientType.TO, destinatario );
msg.setSubject (subject);
msg.setContent (mensagem.toString(), "text/HTML");
Transport transport = session.getTransport("smtp.gmail.com");
transport.connect(mailServer,"meuemail@gmail.com","******");
msg.saveChanges();
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
return "<center><h2>email enviado com sucesso!!</h2></center>";
}
}[/code]
enviaremail.jsp
<%@page import="Email.Email" %>
<jsp:useBean id="email" class="Email.Email"/>
<%
String mailServer = "smtp.gmail.com";
String assunto = request.getParameter("assunto");
String para = "meuemail@gmail.com";
String de = request.getParameter("de");
String mensagem;
mensagem = "Assunto..:" + request.getParameter("assunto") + "<br>" + "E-mail..:" + request.getParameter("de") + "<br>" + "Fone..:" + request.getParameter("fone") + "<br>" + request.getParameter("obs")+ "<br> \n";
email.sendMail(mailServer, assunto, para, de, mensagem);
response.sendRedirect("ok.html");
%> [/code]
Meu form que aciona o enviaremail
[code]<form name="formCad" action="enviaremail.jsp" method="get"
enctype="text/plain">
<table width="65%" align="center" border="2" bordercolor=#5378D0>
<tr bordercolor="#FFFFFF"><td><br></td><td><br></td>
</tr>
<tr bordercolor="#FFFFFF">
<td width="34%"><b>                      Login:</b></td>
<td width="86%"><input type="text" name="txtLogin" maxlength="50" size="50"/></td>
</tr>
<tr bordercolor="#FFFFFF">
<td><b>                      E-Mail:</b></td>
<td><input type="text" name="txtMail" maxlength="50" size="50"/></td>
</tr>
<tr bordercolor="#FFFFFF">
<td height="61"> <div align="right">
<input name="btnEnviar" type="submit" value=" Enviar " />
</div></td>
<td height="61"> <div align="center">  <input type="reset" name="limpar" value=" Limpar " /></td>
</tr>
</table>
<center>Informe seu <b>Login</b> e <b>E-Mail</b> que constam nos seus dados pessoais, para receber sua senha por e-mail.</center>
</form>
Quando executo somente o java, ele funciona corretamente, mas quando executo pela página jsp aparece o seguinte erro:
[quote]javax.mail.NoSuchProviderException: No provider for smtp.gmail.com
at javax.mail.Session.getProvider(Session.java:455)
at javax.mail.Session.getTransport(Session.java:650)
at javax.mail.Session.getTransport(Session.java:631)
at Email.Email.sendMail(Email.java:44)
at _fsmc._tutorial._samples._enviaremail._jspService(_enviaremail.java:102)
[SRC:/fsmc/tutorial/samples/enviaremail.jsp:50]
at com.orionserver[Oracle Containers for J2EE 10g (10.1.3.0.0) ].http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:416)
at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:478)
at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:401)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:719)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:376)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:870)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:451)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:218)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:119)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:230)
at oracle.oc4j.network.ServerSocketAcceptHandler.access$800(ServerSocketAcceptHandler.java:33)
at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:831)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Thread.java:595)[/quote]
O que pode ser??? Aparentemente os jars necessários estão todos corretamente instalados.