Qualcuno può gentilmente dirmi perchè non funziona ???
Ormai sono giorni che ci metto le mani senza sapere dove sbaglio.
// APPLET -- Form.java
// Dichiarazione degli import import java.awt.*;
import java.applet.*;
import java.awt.*;
//import java.awt.event.*;
import java.io.*;
import java.net.*;
// Dichiarazione della classe public class Form
class Form extends Applet {
// Procedura che inizializza l'Applet
String EMail;
Label label1;
Label label2;
Label label3;
Label label4;
Label label5;
Checkbox LavSi,LavNo;
TextField Nome,Cognome,Eta;
Button spedisci,azzera;
public void init()
{
// inizializza la classe
//super.init();
// Prende il parametro passatogli
EMail=getParameter("email");
// Da questo punto in poi inizializza i vari
// Controlli presenti sullo schermo. Per
// chi ha a disposizione un ambiente integrato
// come J++ o Cafè, non è necessario curarsene
// in quanto provvede a tutto il compilatore.
//{{INIT_CONTROLS
setLayout(null);
resize(346,227);
CheckboxGroup group1= new CheckboxGroup();
label1=new Label("Applet che spedisce via E-Mail una Form", Label.CENTER);
add(label1);
label1.setBounds(40,8,266,15);
label2=new java.awt.Label("Nome:");
add(label2); label2.setBounds(14,53,70,15);
label3=new Label("Cognome:");
add(label3);
label3.setBounds(14,90,70,15);
label4=new Label("Età:");
add(label4);
label4.setBounds(14,135,70,15);
LavSi=new Checkbox("Si",group1, false);
add(LavSi);
LavSi.setBounds(280,62,35,19);
LavNo=new Checkbox("No",group1, false);
add(LavNo);
LavNo.setBounds(280,83,35,22);
Nome=new TextField(27);
add(Nome);
Nome.setBounds(14,69,226,21);
Cognome=new TextField(27);
add(Cognome);
Cognome.setBounds(14,105,226,23);
Eta=new TextField(7);
add(Eta);
Eta.setBounds(14,150,63,23);
label5=new Label("Lavora?",Label.CENTER);
add(label5);
label5.setBounds(266,45,56,15);
spedisci=new Button("Spedisci");
add(spedisci);
spedisci.setBounds(14,189,88,27);
azzera=new Button("Azzera");
add(azzera);
azzera.setBounds(235,189,87,27);
LavNo.setState(false);
LavSi.setState(true);
}
// processEvent, ossia la funzione che viene
// richiamata per interpretare tutti i messaggi
// che vengono passati e chiamare le funzioni
// ad essi associate.
public boolean handleEvent(Event event) {
if (event.id== Event.ACTION_EVENT && event.target == this.spedisci){
// Se il messaggio è: "Premuto
// il pulsante Spedisci", allora
// provvedi alla spedizione
try {
clickedSpedisci();
}
catch(Exception e) {
System.out.println("Eccezione"+e);
}
return true;
}
else
if (event.id == Event.ACTION_EVENT && event.target == azzera) {
// Se il messaggio è: "Premuto il pulsante
//Azzera", allora provvedi alla cancellazione
clickedAzzera();
return true;
}
return super.handleEvent(event);
}
// Questa procedura azzera i campi dell'Applet
public void clickedAzzera() {
Cognome.setText("");
Nome.setText("");
Eta.setText("");
LavNo.setState(false);
LavSi.setState(true);
}
// Pezzo forte dell'Applet, questa procedura provvede
//alla spedizione via E-Mail dei dati.
public void clickedSpedisci() throws IOException {
// Apre un socket di comunicazione con un Host
//(consiglio di usare il vostro provider)
//alla porta 25 (quella dedicata alla posta).
Socket mailSocket = new Socket("smtp.fastwebnet.it", 25);
// Associa ad esso uno stream per poter
//usare la funzione println
PrintStream os = new PrintStream(mailSocket.getOutputStream());
int l,k,i;
String User,Host;
// Decodifica l'indirizzo E-Mail
// dividendolo in User e Host
User="";
Host="";
for (l=i=0; i<EMail.length();i++)
if(EMail.charAt(i)!='@')
if(l==0) User+=EMail.charAt(i);
else Host+=EMail.charAt(i);
else l=1;
// Comunica con il socket precedentemente
// aperto inviando i comandi SMTP
// Apre la comunicazione postale
os.println("HELO "+Host);
// Specifica che la mail proviene da .
// Per evitare errori è consigliato inserire un
// indirizzo valido.
os.println("MAIL FROM: ");
// La mail viene ricevuta da User+"@"+Host
os.println("RCPT TO: "+User+"@"+Host);
// Incominciano i dati os.println("DATA");
os.println("SUBJECT: Campi della Form");
// Scrive tutti i campi dell'Applet
os.println("Nome: "+Nome.getText());
os.println("Cognome: "+Cognome.getText());
os.println("Eta: "+Eta.getText());
if(LavSi.getState())
os.println("Lavora");
else
os.println("Non lavora");
// Fondamentale il '.' per indicare la fine
// della mail (vedi standard SMTP)
os.println(".");
// Chiude la comunicazione
os.println("QUIT");
os.close();
mailSocket.close();
}
// Per ultima cosa (ultima, ma non meno importante) non
// dimentichiamo le variabili usate.
// La maggior parte di queste (i vari controlli)
// vengono creati in automatico (e inizializzati nella init())
// se si usa un ambiente integrato.
public static void main(String args[])
{
Frame f = new Frame("Form");
Form tM = new Form();
tM.init();
tM.start();
f.add("Center", tM);
f.setSize(346, 227);
f.pack();
f.setVisible(true);
}
}
**** CODICE HTML CHE LANCIA LA APPLET ****
<HTML>
<HEAD>
<TITLE> Form in Java
</TITLE>
</HEAD>
<BODY>
<APPLET CODE="Form.class" WIDTH=346 HEIGHT=227
email="indirizzo@di_prova.it"></APPLET>
</BODY>
</HTML>