PDA

Visualizza la versione completa : [Java] Servlet e-mail


davo83cast
30-12-2004, 20:06
Ragazzi innanzitutto salve a tutti!!!
E' il mio primo post e colgo l'occasione per fare a tutti i migliori auguri di buon anno e buone Feste!!

Veniamo al mio problema:

all' università mi è stata assegnata una tesina (il corso è completamente basato sulle servlet http) che consiste nel realizzare un sito web che gestisca registrazioni, login e tante altre cose.
Volevo realizzare un form che, tramite l'inserimento della propria e-mail, invii una mail all'indirizzo inserito con all'interno username e password associato alla mail stessa!!
Si insomma, inserisco l'email nel form, la servlet provvede ad effettuare una query sul database ove sono inseriti i dati delle registrazioni, estrae l'user e la password, e li spedisce via mail all'indirizzo prima inserito.

Ok, mi rendo conto che pretendere la risoluzione completa è veramente troppo anche perchè ho quasi fatto tutto!!!L'unica cosa che non riesco a fare è integrare il tutto!!

Cioè, la parte di "estrazione" dei dati tramite l'e-mail l'ho fatta ed è :

import java.io.*;
import java.util.*;

import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class send extends HttpServlet{
public void service (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {


PrintWriter out = res.getWriter();


String query ="SELECT * FROM utenti WHERE mail = '"+posta+"'";

String dbUrl = "jdbc:odbc:utenti";




try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //procedura di connessione al database
Connection c =
DriverManager.getConnection(dbUrl); //procedura di connessione al database
Statement s=c.createStatement(); //creazione di uno statement
ResultSet r=s.executeQuery(query);

while(r.next()) {
String v5 = r.getString("username");
String v6 = r.getString("password");}
}

catch (Exception e)
{
out.println("<HTML>");
out.println("<BODY background=ovibos_moschatus01.jpg>");
out.println("<H1>Errore</H1>");
out.println(e.toString());
out.println("</BODY>");
out.println("</HTML>");
}
}


e la parte di invio della mail è:

import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class invio
{

public static void main(String args[])
{


String host = "xxxx";
String from = "xxxxxxxx";

String to = "xxxxxxxxxxxx";
String subject = "emaildanielecalise";
String text = "prova";


Properties props = System.getProperties();
props.put("mail.smtp.host", host);

Session session = Session.getDefaultInstance(props, null);
session.setDebug(false);


try
{

MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);

MimeBodyPart mbp_text = new MimeBodyPart();
mbp_text.setText(text);

Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp_text);



msg.setContent(mp);


msg.setSentDate(new Date());


Transport.send(msg);

System.out.println("Successful send to " + to);
}
catch (MessagingException mex) { }



}
}
Mi sto veramente scervellando per trovare una soluzione ma proprio non ci riesco!!!
Magari ho solo bisogno di un po' di riposo!!! :D :D :D

No a parte gli scherzi ringrazio anticipatamente chiunque riesca ad aiutarmi!!!!!!

MMarzia
31-12-2004, 00:57
il linguaggio va specificato nel titolo, come da regolamento (http://forum.html.it/forum/showthread.php?threadid=762409)

Angelo1974
31-12-2004, 11:07
Ciao; non mi sembra di aver afferato in fondo il tuo problema.... da quello che ho capito dovresti utilizzare il codice dell'invio della mail all'interno del servlet, giusto?
Se è così non ce la farai mai se non cambi il codice dell'invio mail; la cosa più semplice che tu possa fare è:


import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class invio
{

public static void sendMail(String from, String to)
{


String host = "xxxx";
//String from = "xxxxxxxx";

//String to = "xxxxxxxxxxxx";
String subject = "emaildanielecalise";
String text = "prova";


Properties props = System.getProperties();
props.put("mail.smtp.host", host);

Session session = Session.getDefaultInstance(props, null);
session.setDebug(false);


try
{

MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);

MimeBodyPart mbp_text = new MimeBodyPart();
mbp_text.setText(text);

Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp_text);



msg.setContent(mp);


msg.setSentDate(new Date());


Transport.send(msg);

System.out.println("Successful send to " + to);
}
catch (MessagingException mex) { }



}
}
Poi nel servlet scrivi, e presuppongo che dalla query tu ricavi anche la mail dell'utente, supponiamo che questo campo si chiami eMail:


import java.io.*;
import java.util.*;

import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class send extends HttpServlet{
public void service (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {


PrintWriter out = res.getWriter();


String query ="SELECT * FROM utenti WHERE mail = '"+posta+"'";

String dbUrl = "jdbc:odbc:utenti";




try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //procedura di connessione al database
Connection c =
DriverManager.getConnection(dbUrl); //procedura di connessione al database
Statement s=c.createStatement(); //creazione di uno statement
ResultSet r=s.executeQuery(query);

while(r.next()) {
String v5 = r.getString("username");
String v6 = r.getString("password");
invio.sendMail( "danailecalise@tuoHost", r.getString("eMail"));
}
}

catch (Exception e)
{
out.println("<HTML>");
out.println("<BODY background=ovibos_moschatus01.jpg>");
out.println("<H1>Errore</H1>");
out.println(e.toString());
out.println("</BODY>");
out.println("</HTML>");
}
}

Questo è l'esempio più semplice ma il meno performante.... cmq lascio a te il compito di migliorarlo.
I problemi che potresti avere sono legati al fatto che alcuni provider richiedono l'autenticazione per poter inviare la mail.
Ciao

davo83cast
31-12-2004, 12:11
Ringrazio angelo e chiedo scusa a mmarzia...Sai com'è, sono un po inesperto!!!!!!!Buon anno a tutti!!

Loading