Hola, estoy tratando de enviar un correo por un jsp con Java, pero necesito hacer todo en el jsp, es para un proyecto viejo y no debo ocupar servlets ni otras clases java, así como les muestro:
Código PHP:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.text.*" %>
<%@ page import="java.util.*, javax.mail.*, javax.mail.internet.*, javax.activation.*, javax.mail.PasswordAuthentication.*, javax.mail.Authenticator.*" %>
<%
String Enviar = request.getParameter("enviar") == null ? "0" : request.getParameter("enviar");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<%
System.out.println("Enviar : " + Enviar);
if (Enviar.equals("1")) {
String servidor = request.getParameter("srv");
String de = request.getParameter("de");
String para = request.getParameter("para");
String asunto = request.getParameter("asunto");
String contenido = request.getParameter("contenido");
String auth = request.getParameter("auth");
String usuario = request.getParameter("usuario");
String contrasena = request.getParameter("contrasena");
String puerto = request.getParameter("puerto");
MimeMultipart multipart = new MimeMultipart();
System.out.println("Para : " + para + " \nDe: " + de + " \nAsunto: " + asunto + " \nContenido: " + contenido + " \nServidor:" + servidor);
try {
Properties properties = new Properties();
properties.put("mail.smtp.host", servidor);
properties.put("mail.smtp.starttls.enable", "false");//
properties.put("mail.smtp.port", puerto);
properties.put("mail.smtp.user", usuario);
properties.put("mail.smtp.mail.sender", para);
if (auth.equals("si")) {
properties.put("mail.smtp.auth", "true");
}
Session sess = Session.getDefaultInstance(properties, null);
/* 1 */
//Session sess = Session.getDefaultInstance(properties, new PasswordAuthentication(usuario, contrasena));
//sess.setDebug(true);
MimeMessage msg = new MimeMessage(sess);
msg.setFrom(new InternetAddress(de, "E-mail por JSP"));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(para));
//msg.setRecipients(Message.RecipientType.CC, ccAddress);
//msg.setRecipients(Message.RecipientType.BCC, bccAddress);
msg.setSubject(asunto);
msg.setSentDate(new Date());
// BODY
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(contenido.toString());
multipart.addBodyPart(mbp);
msg.setContent(multipart);
//Transport.send(msg);
try {
Transport mta = sess.getTransport("smtp");
/* 2 */
mta.connect("smtp.dominio.com", "[email protected]", "unPassword"); //
//mta.connect();
try {
mta.send(msg);
} catch (SendFailedException ex) {
System.out.println("Error al enviar 3 : " + ex.toString());
}
} catch (Exception ex) {
System.out.println("Error al enviar 2 :" + ex.toString());
}
} catch (Exception e) {
System.out.println("Error al enviar 1 : " + e);
}
}
%>
<body>
<h1>Envio de correo!</h1>
<br>
<form id="mail" name='mail' method="post" action="">
<table>
<tr>
<td>Servidor Mail:</td><td><input type="text" value="" name="srv"/></td>
</tr>
<tr>
<td>Para:</td><td><input type="text" value="" name="para"/></td>
</tr>
<tr>
<td>De:</td><td><input type="text" value="" name="de"/></td>
</tr>
<tr>
<td>Asunto:</td><td><input type="text" value="Prueba de sistema" name="asunto"/></td>
</tr>
<tr>
<td>Contenido:</td><td><input type="text" value="Contenido de prueba!" name="contenido"/></td>
</tr>
<tr>
<td colspan="2">Otras configuraciones</td>
</tr>
<tr>
<td>Autentificación:</td>
<td>
<select name="auth">
<option value="si">Si</option>
<option value="no">No</option>
</select>
</td>
</tr>
<tr>
<td>Usuario:</td><td><input type="text" value="" name="usuario"/></td>
</tr>
<tr>
<td>Contraseña:</td><td><input type="text" value="" name="contrasena"/></td>
</tr>
<tr>
<td>Puerto:</td><td><input type="text" value="25" name="puerto"/></td>
</tr>
<tr align="center">
<td colspan="2">
<input type='hidden' id="enviar" name='enviar' value="<%=Enviar%>">
<input type="button" value="Enviar" onclick="document.getElementById('enviar').value=1;document.mail.submit();">
</td>
</tr>
</table>
</form>
</body>
</html>
Mi problema está en que no puedo validar la autentificación del usuario, el cual lo intento en las lineas con el comentario /* 1 */ y /* 2 */, en el primer caso intento autentificar al crear la sesión pero no logro identificar que poner en el lugar del NULL, y en el segundo caso, me arroja una excepción indicando que no se ha logrado autentificar, sin embargo, con solo java si puedo enviar correos sin problemas autentificandome, pero así no he logrado hacerlo, estoy seguro que en la linea del comentario /* 1 */ debe estar mi respuesta, solo que no se como implementar de manera correcta el segundo parametro del método "getDefaultInstance" y no se si deba usar ese o el de "getInstance", si alguien puede orientarme se lo agradeceré.
Saludos!
PT. Así como ven el código, es o que necesito implementar aunque no es una estructura correcta. El proyecto es web.