Newsgroup: it.comp.java
Titolo: CI sono vicino!!!! (SMTP MAIL)

Dunque, si! Somno sempre io ke vi rompo!
Quello dell'applet sulla spedizione di Posta!
Prima ho provato a sfruttare il package sun.net.smtp ed non
ho avuto successo. Ora mi son messo di buona lena ed
ho sviluppato delle mie routine per scambiare dati-stream
tra dei sockets (il mio applet e il server MAIL). Dopo
questa faticuccia ho sperimentato il mio applet con
IEXplorer ed ha funzionato al primo colpo! Poi l'ho
provato con Netscape 3.0 Gold e non ha funzionato
per niente! Controllando la Java Console mi sono accorto
della seguente eccezione:
(L'applet è sul mio sito :
http://www.geocities.com/SiliconValley/Horizon/4951/
)
----------------------------------------------------------------------------
--------------------------------------!
	# Security Exception: socket.connect:www.geocities.com->
mail.iol.it
----------------------------------------------------------------------------
--------------------------------------!
IL CODICE SORGENTE E' IL SEGUENTE:
import java.applet.Applet;
import java.awt.*;
import java.net.*;
import java.io.*;
//
//
// pwd
//
//
public class pwd extends Applet implements Runnable
{
	public String getAppletInfo() 
	{
		return "Applet programmato da M. Magistri";
	}
	Thread runner;
	Button bok, bdel; 
	TextField titolo, inspwd;
	TextArea racconto;
	String Passw, pracconto, ptitolo, ult_linea, result, posta, riga;
	PrintStream destinazione;
	DataInputStream sorgente, sorg_msg; //Io sono la sorgente!!!
	Label etichettaf, et_tit, et_testo, et_paswd, et_bott, et_att;
	Frame finestra, attendi;
	Dialog d_att;
	Socket s;
	public void init() 
	{
		bok = new Button("OK");
		bdel = new Button("Cancella");
		racconto = new TextArea("", 40, 40);
		titolo = new TextField("", 30);
		finestra = new Frame("R U Elvira P?");
		attendi = new Frame("Attendere Prego...");
		d_att = new Dialog(attendi, "Attendere Prego...", true);
		inspwd = new TextField("", 10);
		inspwd.setEchoCharacter('-');
		et_tit = new Label("Qui inserisci il titolo...");
		et_testo = new Label("Qui inserisci il raconto...");
		et_paswd = new Label("...e qui la tua parola chiave");
		et_bott = new Label("Cancella x pulire e OK per spedire:");
		add(et_tit);
		add(titolo);
		add(et_testo);
		add(racconto);
		add(et_paswd);
		add(inspwd);
		add(et_bott);
		add(bok);
		add(bdel);
		etichettaf = new Label ("MI SA KE TU NON SEI ELVIRA!!!!  :>");
		finestra.add(etichettaf);
		finestra.resize(200, 60);
		finestra.setLayout(new GridLayout(2, 30));
		et_att = new Label("Attendi...sto spedendo...");
		d_att.add(et_att);
		d_att.resize(200, 60);
		d_att.setLayout(new GridLayout(2, 30));
	}
	public void start() 
	{
		if (runner==null) 
		{
			runner=new Thread(this);
			runner.start();
		}
	}	
	public boolean action(Event evento, Object oggetto) 
	{
		if (evento.target == bdel){
			racconto.setText("");
			titolo.setText("");
			return true;
		}
		if (evento.target == bok) {   
			Passw=inspwd.getText();
			if (Passw.equals("password")) spedisci();
			else finestra.show();
			return true;	
		}
		return false;
	}
	void eccezione(String eccetto, String msg) throws Exception  
	{
		ult_linea = sorgente.readLine();
		if (!ult_linea.startsWith(eccetto)) throw new Exception(msg + ":" +
ult_linea);
		while (ult_linea.startsWith(eccetto + "-")) ult_linea =
sorgente.readLine();
	}
	public void spedisci() 
	{
		s = null;
		pracconto=racconto.getText();
		ptitolo=titolo.getText();
		posta =
ptitolo.toString()+"\r\n\r\nRacconto:\r\n\r\n"+pracconto.toString();
		try {
				//d_att.show();
				s = new Socket("
mail.iol.it
", 25);
				destinazione  = new PrintStream(s.getOutputStream());
				sorgente = new DataInputStream(s.getInputStream());
					eccezione("220", "no greeting");
				destinazione.print("HELO mmquelo\r\n");
					eccezione("250", "helo");
				destinazione.print("MAIL FROM: 
mmq...@iol.it
" +"\r\n");
					eccezione("250", "mail from");		
				destinazione.print("RCPT TO: 
mmq...@iol.it
" + "\r\n");
					eccezione("250", "rcpt to");
				destinazione.print("DATA\r\n");
					eccezione("354", "data");
				destinazione.print("Subject: Elvira");
 
				destinazione.print("\r\n");
				sorg_msg = new DataInputStream(new
StringBufferInputStream(posta.toString())); //interfacciamento stream-dati
				while (sorg_msg.available() > 0) 
				{
					riga = sorg_msg.readLine();
					if (riga.equals(".")) riga = "..";
					destinazione.println(riga);
				}
				destinazione.print("\r\n.\r\n");
					eccezione("250", "end of data");
				destinazione.print("QUIT\r\n");
					eccezione("221", "quit");
				//d_att.hide();
		}
		catch (Exception e) {}
		try {s.close();}
		catch (IOException e) {}
	}
	public void run(){}
	public void stop() 
	{
	if (runner!=null) 
		{
			runner.stop();
			runner=null;
		}
	}
}

 ----------------------------------------------------------------------------
RTFM. Un'applet *non puo'* aprire una socket verso un host
diverso da quello da dove e' stata prelevata, a meno di non richiederne
esplicitamente i diritti, accompagnando la richiesta con una firma
digitale (e solo in Java 1.1, con un browser che supporti le signed
applets - leggi Communicator).
Indi, o piazzi la tua applet su 
mail.iol.it
 - oppure *non va*.
Saluti,
    CS
--
Cristiano Sadun - Software Engineering and Consulting
***********Remove NOSPAM from address to reply***********
*********************************************************
"God is Real - unless declared Integer"

> IEXplorer ed ha funzionato al primo colpo! Poi l'ho
???????????????? Che fa IExplorer ? Se ne frega della sicurezza ?
Solo per curisoita'
Ciao
Vincenzo Giordano, Bologna (ITALIA-ITALY) mailto:
vinc...@iol.it
ICQ --> 5172941
Homepage  
http://www.geocities.com/Hollywood/7764/
Membro del CSM --> 
http://www.trailerpark.com/siesta/nikotra/index.html




Scusa non è per cattiveria, ma
    C'ERA PROPRIO BISOGNO DI CITARE TUTTO IL MESSAGGIO di M.Magistri (sorgente
java compreso) per tre righe di risposta?
Senza rancore :-)
Giorgio.

 Solo per curiosita'
In pratica ciò che mi succedeva con quel codice da voi visionato,
consisteva nel fatto che quando facevo partire l'applet da off-line,
in IExplorer, funzionava, mentre on-line no!
Nel primo caso l'applet risiedeva sul mio pc e non su un server.
Nel secondo, tentavo di aprire un socket su
un server diverso da quello del codeBase.
Ora mi sono chiarito???? Scusate se ho impastrocchiato le cose!
Comunque l'applet ora funziona e si trova, assieme ad altri due analoghi,
all'indirizzo 
http://users.iol.it/mmquelo/index.html
 .