Newsgroup: it.comp.java
Titolo: e-mail in Html senza Javamail?

Ciao a tutti
è possibile mandare una e-mail via socket in formato html senza dover
scomodare l'API JavaMail?
Grazie a tutto il newsgroup per le ingormazioni preziose che attingo ogni
minuto :)
--
Matteo[ker]
ker...@libero.it
ICQ: 85754882
"...working in progress, please wait... I'm loading my brain...."


E' possibile, ma sarebbe come riscrivere parte di javamail,
quindi a che scopo? Servirebbe solo ad umentare i possibili bug della tua
applicazione.

 ha scritto nel messaggio
news:DceI6.9395$eJ6.3...@news.infostrada.it...


: 

In realta' e' possible, e senza riscrivere nulla. :)
Il JDK viene fornito con un client SMTP gia' pronto all'uso, *tranne* per
il fatto che l'host a cui parlare e' "mailhost" oppure quello definito
dalla property "mail.host".
Per usarlo, basta usare un'URL nella forma "mailto:
pi...@pallino.it
",
e aprire la relativa URLConnection.
Ne scrissi in dettaglio nel numero di Dicembre 2000 di JavaReport:
ti riporto il paragrafo relativo.
<quote>
First, let's have a look at mailto: URLs. The format is well known since
the birth of the web: mailto:
user@host
. Such URLs map easily to the SMTP
protocol  - since all you have to do to talk to a SMTP peer is to say who
you are, and to whom you want to send your mail . 
The Java standard library supports mailto: URLs, which means that a Java
URL object can be constructed from a string in the format above without
raising any exception. Problem is, if you try to use this URL object with
a Sun's JVM  on your average Win32 machine, it won't work. With "use" I
intend the process of getting an URLConnection object and physically
connecting it. At runtime, on connect(), this will most often produce a
somewhat cryptic exception, namely UnknownHostException: mailhost. 
What happens? What the Java runtime's complaining about is that, in order
to open an SMTP connection and send the mail to the recipient, it needs
to know where the SMTP server resides. Therefore, he's looking for the a
definition of the IP address of an host named mailhost - and your average
Win32 machine does not come, by default, with such definition. 
To solve the problem, you can either define a property "mail.host" when
running the code, as in 
java -Dmail.host=193.216.69.103 MailtoURLTest
or add the definition of mailhost to the hosts file, in a line like
mailhost	193.216.69.103
where you specify the IP address of your SMTP peer (or put such
definition in your DNS server).  If both are defined, the property wins. 
This done, the Java runtime will happily try and open a SMTP connection
to that IP whenever a mailto: URL is (programmatically) opened,
negotiating the initial SMTP conversation (HELO, RCPT TO:, etc) and
leaving the stream ready for the actual message. You may also define the
properties "
user.name
" or "user.fromaddr" to change/specify the local
user name (user@<local IP address>) or the complete us...@host.domain form
(by default, the data's read from system information). Both properties
affect the "mail from:" protocol exchange. 
Closing the output stream finalizes the transaction - as you can see in
MailtoURLTest.java. 
</quote>
L'esempio a cui mi riferisco nell'articolo:
import java.net.*;
import java.io.*;
import handlers.*;
public class MailtoURLTest {
	public static void main(String args[]) throws Exception {
 
		// Create the URL
		URL url=new URL("mailto:
pi...@pallino.it
");
 
		// The next line will fail with a Sun JVM if:
		//   - no "mail.host" system property has been defined
		//   - you don't have a "mailhost" definition neither in your 
 	      //     "hosts" file nor in you local DNS server
		URLConnection uc = url.openConnection();
 
		// Setup complete us...@host.domain address or just user name
		System.setProperty("user.fromaddr", "
pi...@pallino.it
");
		// System.setProperty("
user.name
", "cris");
 
		// Retrieve the streams
		PrintStream ps = new PrintStream(uc.getOutputStream());
 
		// Send SMTP headers
		System.out.println("Sending SMTP headers");
		ps.print("Subject: Test\r\n");
		ps.flush();
		ps.print("From: 
pi...@pallino.it
\r\n");
		ps.flush();
 
		// Blank line, body follows
		System.out.println("Sending blank line");
		ps.print("r\n"); 
		ps.flush();
 
		// Body
		System.out.println("Sending body");
		ps.print("It's just\r\n");
		ps.flush();
		ps.print("a little test\r\n");
		ps.flush();
 
		// Finish
		System.out.println("Closing stream");
		ps.close();
 
		Thread.sleep(100000);
 
		System.out.println("Finished");
	}
}
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun

 dalla property "mail.host".
Questa non la sapevo, bella trovata :-)
Che tu sappia l'oggetto URL
 fa anche connessioni https ?
Comunque non è difficile scrivere un programmino con il socket che spedisce
la mail.

 To solve the problem, you can either define a property "mail.host" when


Io oso.
Attachment no eh?
Sai, fatto questo per funzionalità di invio posta sarebbe storia.
Ciao e grazie 1000 comunque, è gia tanto questo.
Oliviero

solo una cosa...non ho capito bene come e dove settare il mailHost.
O attraverso la proprieta' "mail.host", che si definisce sulla linea
di comando con java -Dmail.host=blahblahblah
Oppure definendo "mailhost" o nel DNS locale (se sei in rete locale,
ma devi essere amministratore della rete per farlo) o semplicemente 
nel file "hosts" (ad esempio, il file si trova in 
C:\WINNT\system32\drivers\etc\host in windows NT, in \etc\hosts
in molti Unix, eccetera


Sai, fatto questo per funzionalità di invio posta sarebbe storia.
Per quel tipo di cose val la pena usare JavaMail - il client
SMTP del JRE Sun non offre alcun supporto.
