Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    81

    [JSP]bloccato su form mail

    Salve a tutti. Devo creare un form mail in jsp (e per farlo ho trovato questa guida a mio parere anche poco chiara: http://www.mrwebmaster.it/jsp/svilup...-jsp_7683.html). Proprio nel compilare la prima pagina eclipse mi da questo errore: "properties cannot be resolved to a type in jsp".
    vi posto il codice:
    codice:
    
    
    codice:
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!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=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <%
    Properties props = new Properties();
    props.put("mail.smtp.port", "25");
    props.put("mail.smtp.host",  "smpt.example.com");
    Session session = Session.getDefaultInstance(props);
    Message message = new MimeMessage(session);
    
    
    InternetAddress from = new InternetAddress("mittente@example.com");
    InternetAddress to = new InternetAddress("destinatario@example.com");
    
    
    message.setFrom(from);
    message.addRecipient(Message.RecipientType.TO, to);
    
    
    message.setSubject("Oggetto del messaggio");
    message.setSentDate(new Date());
    message.setText("Corpo del messaggio");
    
    
    %>
    </body>
    </html>
    
    

    grazie per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da simo9115 Visualizza il messaggio
    ho trovato questa guida a mio parere anche poco chiara: http://www.mrwebmaster.it/jsp/svilup...-jsp_7683.html
    Non ho letto tutto tutto quell'articolo ma a prima vista mi pare chiaro. E il punto poi è che quell'articolo mostra come inviare una mail da una Servlet ... non direttamente da una JSP.
    E come vedi, nella classe della Servlet ci sono tutti gli import necessari (sebbene l'articolo usa molto il "import on demand", cioè quello con * ).

    Anche nelle JSP puoi usare classi specifiche in altri package ma .. allo stesso modo vanno importate. E si fa sempre con la direttiva page usando l'attributo import es.:

    codice:
    <%@ page import="java.io.*,java.util.*" %>

    E comunque riempire le JSP con scriptlet Java è sempre una soluzione abbastanza "sporca".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    81
    Quote Originariamente inviata da andbin Visualizza il messaggio
    comunque riempire le JSP con scriptlet Java è sempre una soluzione abbastanza "sporca".
    innanzitutto ti ringrazio dell'aiuto che soluzione migliore hai da propormi?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da simo9115 Visualizza il messaggio
    che soluzione migliore hai da propormi?
    Sostanzialmente quella indicata nell'articolo: una pagina web ha un form con dei dati usati per la email, poi l'utente invia il form (meglio in POST piuttosto che in GET) ad un url "mappato" su una Servlet, quindi è quest'ultima che esegue l'invio della mail e poi puoi fare forward o redirect verso un'altra risorsa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    81
    guarda girando un po su internet ho trovato questa guida: http://www.tutorialspoint.com/jsp/jsp_sending_email.htm
    io ho fatto una cosa del genere e(ovviamente per me) non funziona:

    pagina dove si trova il form:
    codice:
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!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=ISO-8859-1">
    <title>Info e appuntamenti</title>
    <link rel="stylesheet" href="css/miocss.css">
    <link rel="stylesheet" href="css/jquery-ui.css">
    <script src="js/jquery.js"></script>
    <script src="js/jquery-ui.js"></script>
    <script>
      $(function() {
        $( "#datepicker" ).datepicker();
      });
     </script>
    
    
    </head>
    </head>
    <body>
    <div id="header">
    	<h1>LORETO</h1>	
    	</div>
    <div id="forminfo">
    <form action="" method= "POST">
    <table id="forminfo">
    	<form action="Contatto.jsp" method= "POST">
    	<tr>
    		<td>Giorno della visita:</td>	
    		<td><input type="text" id="datepicker"></td>
    	</tr>
    	<tr>
    	<td>Tipo di visita:</td>
    	<td><input type="radio" name="tipovisita" id="tipovisita" value="Singola"> Singola<br>
      	<input type="radio" name="tipovisita" id="tipovisita" value="Coppia"> Coppia<br>
      	<input type="radio" name="tipovisita" id="tipovisita" value="Famiglia"> Famiglia<br>
      	<input type="radio" name="tipovisita" id="tipovisita" value="Gruppo"> Gruppo</td>
      	</tr>
      	<tr>
      	<td>Email di contatto:</td>
      	<td><input type="text" name="email" id="email"></td>  	
      	</tr>
      	<tr>
      	<td>Eventuali informazioni:</td>
      	<td><textarea name="testoemail" id="testoemail" rows="5" cols="40">
      	
    		</textarea></td>
    	</table>
    	
    	<br>
    <textarea rows="4" cols="70" readonly>Ai sensi del d.lgs. 196/2003, recante disposizioni per la tutela delle persone e di altri soggetti rispetto al trattamento dei dati personali, i dati inseriti nel pannello saranno usati da Francesco Maria Clementi, al solo scopo di portare a buon fine trattative commerciali e/o di fornitura servizi. I dati non saranno in alcun modo ceduti a terzi senza esplicita autorizzazione e verranno in seguito utilizzati solo per finalità strettamente legate ai servizi forniti o a promozioni. </textarea>
    <br>
    <input type="checkbox" id="privacy" name="privacy" value="privacy">Accetto</input>
    <input class="button" type="submit" value="Invia"/>           
    <input class="button" type="reset" value="Pulisci"/>
    </form>
    </div>
    
    
    <br>
    <div id="footer">
    	Dati Francesco
    </div>
    
    
    
    
    </body>
    </html>
    pagina invio dati:
    codice:
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%
    String mail = request.getParameter("email");
    String testo = request.getParameter("testoemail");
    %>
    <jsp:forward page="mail.jsp">
    	<jsp:param name="email" value="<%=mail%>" />
    	<jsp:param name="mail" value="<%=mail%>" />	
    </jsp:forward>
    pagina vista sul sito linkato:
    codice:
    <%@ page import="java.io.*,java.util.*,javax.mail.*"%>
    <%@ page import="javax.mail.internet.*,javax.activation.*"%>
    <%@ page import="javax.servlet.http.*,javax.servlet.*" %>
    <%
       String result;
       // Recipient's email ID needs to be mentioned.
       String to = "simoneclementi@hotmail.it";
    
    
       // Sender's email ID needs to be mentioned
       String from = request.getParameter("email");
    
    
       // Assuming you are sending email from localhost
       String host = "localhost";
    
    
       // Get system properties object
       Properties properties = System.getProperties();
    
    
       // Setup mail server
       properties.setProperty("mail.smtp.host", host);
    
    
       // Get the default Session object.
       Session mailSession = Session.getDefaultInstance(properties);
    
    
       try{
          // Create a default MimeMessage object.
          MimeMessage message = new MimeMessage(mailSession);
          // Set From: header field of the header.
          message.setFrom(new InternetAddress(from));
          // Set To: header field of the header.
          message.addRecipient(Message.RecipientType.TO,
                                   new InternetAddress(to));
          // Set Subject: header field
          message.setSubject("This is the Subject Line!");
          // Now set the actual message
          message.setText("This is actual message:"+request.getParameter("testoemail"));
          // Send message
          Transport.send(message);
          result = "Sent message successfully....";
       }catch (MessagingException mex) {
          mex.printStackTrace();
          result = "Error: unable to send message....";
       }
    %>
    <html>
    <head>
    <title>Send Email using JSP</title>
    </head>
    <body>
    <center>
    <h1>Send Email using JSP</h1>
    </center>
    <p align="center">
    <% 
       out.println("Result: " + result + "\n");
    %>
    </p>
    </body>
    </html>
    molto probabilmente sarà un errore banale visto la mia pochissima esperienza...

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da simo9115 Visualizza il messaggio
    molto probabilmente sarà un errore banale visto la mia pochissima esperienza...
    Non è questione di errore "banale" oppure no. È che quello che hai fatto non è affatto quello che proponevo io e che in sostanza era l'approccio indicato in quell'articolo indicato all'inizio.

    Quindi:

    1) Fai una pagina web che ha il form con i dati utili per l'invio della email. Questa pagina può essere "statica" (.html/.htm) o "dinamica" (.jsp). Come viene generata la pagina che mostra il form e/o da dove arrivi non è granché importante e non c'entra tanto con la problematica dell'invio della email.

    2) Il <form> dovrà avere una action="urlMappatoSuUnaServlet" dove urlMappatoSuUnaServlet è chiaramente un url che all'interno della webapp è "mappato" su una Servlet.

    3) Fai una Servlet (extends HttpServlet) con il doPost implementato (avendo fatto l'invio del form in POST) al cui interno prendi i dati con request.getParameter e con questi puoi poi creare il MimeMessage da inviare.


    Anche se quell'articolo indicato non è completissimo/chiarissimo, le parti di codice salienti sono quelle mostrate.
    Ultima modifica di andbin; 21-03-2016 a 14:12
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    81
    Quote Originariamente inviata da andbin Visualizza il messaggio
    2) Il <form> dovrà avere una action="urlMappatoSuUnaServlet" dove urlMappatoSuUnaServlet è chiaramente un url che all'interno della webapp è "mappato" su una Servlet.
    scusa ancora per il disturbo ma questo tipo di operazione nn l'ho mai eseguita.
    Ho creato il file web.xml e lo inserito all'interno della cartella WEB-inf.
    Il file deve essere configurato in questo modo?
    codice:
    <web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
        <servlet>
            <servlet-name>SendMail</servlet-name>
            <servlet-class>SendMail</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>SendMail</servlet-name>
            <url-pattern>/servlet</url-pattern>
        </servlet-mapping>
    </web-app>
    ovviamente SendMail è la servlet.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da simo9115 Visualizza il messaggio
    Il file deve essere configurato in questo modo?
    ovviamente SendMail è la servlet.
    Di per sé è tecnicamente corretto. Nelle webapp sarebbe bene e meglio sfruttare i package, cioè non mettere classi nel package di default.

    Comunque siccome in url-pattern hai messo /servlet, il / è relativo alla context-root, ovvero la tua servlet risponde all'url assoluto (detto in modo generalizzato):

    http://nomehost:porta/nomecontesto/servlet

    Se la pagina del form fosse nella root del contesto, cioè rispondesse a es.:

    http://nomehost:porta/nomecontesto/form.html

    (o .jsp ... ma non ha importanza ora), allora in action puoi mettere

    action="servlet"

    perché è relativo alla pagina che è già nella context-root. Attenzione: NON puoi mettere action="/servlet" perché lato client, il "/" è relativo alla server-root e vorrebbe dire http://nomehost:porta/servlet che ovviamente non corrisponde!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    81
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Di per sé è tecnicamente corretto. Nelle webapp sarebbe bene e meglio sfruttare i package, cioè non mettere classi nel package di default.

    Comunque siccome in url-pattern hai messo /servlet, il / è relativo alla context-root, ovvero la tua servlet risponde all'url assoluto (detto in modo generalizzato):

    http://nomehost:porta/nomecontesto/servlet

    Se la pagina del form fosse nella root del contesto, cioè rispondesse a es.:

    http://nomehost:porta/nomecontesto/form.html

    (o .jsp ... ma non ha importanza ora), allora in action puoi mettere

    action="servlet"

    perché è relativo alla pagina che è già nella context-root. Attenzione: NON puoi mettere action="/servlet" perché lato client, il "/" è relativo alla server-root e vorrebbe dire http://nomehost:porta/servlet che ovviamente non corrisponde!
    grazie mille per l'aiuto e per la pazienza dimostrata! grazie mille ora porta tutto grazie e ancora grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.