Foros del Web » Programación para mayores de 30 ;) » Java »

Autentificación de usuario en correo de java en un jsp

Estas en el tema de Autentificación de usuario en correo de java en un jsp en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/08/2012, 17:44
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 1 mes
Puntos: 3
Pregunta Autentificación de usuario en correo de java en un jsp

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(propertiesnull);
                        
/* 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.
__________________
Wow! No se que decir...
  #2 (permalink)  
Antiguo 03/08/2012, 23:08
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Autentificación de usuario en correo de java en un jsp

No sé cual es el problema. Si dices que eres capaz de hacerlo en "solo java", pon los mismos parámetros aquí.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 06/08/2012, 07:56
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 1 mes
Puntos: 3
Respuesta: Autentificación de usuario en correo de java en un jsp

En java tengo esta clase:

Código PHP:
package correo;

import javax.mail.PasswordAuthentication;

public class 
SMTPAuthentication extends javax.mail.Authenticator {

    @
Override
     
public PasswordAuthentication getPasswordAuthentication() {

        
String username "[email protected]";
        
String password "suContrasena";
        return new 
PasswordAuthentication(usernamepassword);

    }

y esa clase la utilizo en otra para hacer la autentificación:

Código PHP:
...
SMTPAuthentication auth = new SMTPAuthentication();
            
Session session Session.getInstance(propauth); //Para usar autentificación
... 
Lo que no comprendo es como hacerle para que en lugar de usar una clase, pueda poner la autentificación ahí mismo, en lugar de usar la variable de "auth"
__________________
Wow! No se que decir...
  #4 (permalink)  
Antiguo 06/08/2012, 08:16
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Autentificación de usuario en correo de java en un jsp

¿Has probado a no poner nada?. El usuario y password se pone más adelante, en el transport.connect().

Código java:
Ver original
  1. Properties properties = new Properties();
  2. properties.put("mail.smtp.host", servidor);
  3. properties.put("mail.smtp.starttls.enable", "false");//
  4. properties.put("mail.smtp.port", puerto);
  5. properties.put("mail.smtp.user", usuario);
  6. properties.put("mail.smtp.mail.sender", para);
  7. if (auth.equals("si")) {
  8.    properties.put("mail.smtp.auth", "true");
  9. }
  10. Session session = Session.getDefaultInstance(props);
  11. ...
  12. Transport t = session.getTransport("smtp");
  13. t.connect("usuario", "password");

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 06/08/2012, 08:43
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 1 mes
Puntos: 3
Respuesta: Autentificación de usuario en correo de java en un jsp

Hola chuidiang, si lo intenté pero me arrojaba este error:

Código PHP:
Error al enviar 1 java.lang.SecurityExceptionAccess to default session denied 
Pero ya lo resolví, implementé estas lineas:

Código PHP:
Authenticator au = new Authenticator() {
                           @
Override
                           
protected PasswordAuthentication
                              getPasswordAuthentication
() {
                              return new 
PasswordAuthentication
                                 
(usuariocontr);
                           }
                        };

                        
Session sess Session.getDefaultInstance(propertiesau); 
__________________
Wow! No se que decir...

Etiquetas: clase, correo, jsp, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:19.