Mentre il codice della classe CRAM_MD5 (utilizzata per l'autenticazione) è il seguente:
Delle considerazioni vanno fatte su alcuni dei parametri:codice:import javax.crypto.*; import javax.crypto.spec.*; import java.security.*; public class CRAM_MD5 { private static void bcopy(byte[] in, byte[] out) { for(int j=0; j<in.length; j++) out[j] = in[j]; } private static String norm(String s) { return (s.length() < 2) ? "0" + s : s; } private static int conv(int val) { return (val < 0) ? 256 + val : val;} private static String toHexDigest(byte[] dig) { String res = ""; for(int j=0; j<dig.length; j++) res += norm(Integer.toHexString(conv(dig[j]))); return res; } public static String getLoginString(String user, String pass, String challenge) throws Exception { byte[] decMsg = (new sun.misc.BASE64Decoder()).decodeBuffer(challenge); byte[] k_ipad = new byte[64]; byte[] k_opad = new byte[64]; byte[] digest = null; bcopy(pass.getBytes("UTF8"), k_ipad); bcopy(pass.getBytes("UTF8"), k_opad); for(int j=0; j<64; j++) { k_ipad[j] ^= (byte) 0x36; k_opad[j] ^= (byte) 0x5c; } // Inner MD5 MessageDigest md = MessageDigest.getInstance("MD5"); md.update( k_ipad ); md.update( decMsg ); digest = md.digest(); // Outer MD5 MessageDigest md2 = MessageDigest.getInstance("MD5"); md2.update( k_opad ); md2.update( digest ); String result = toHexDigest( md2.digest() ); return (new sun.misc.BASE64Encoder()).encode( (user + " " + result).getBytes("UTF8") ); } }
1) L'elenco dei destinatari in copia può essere vuoto (può non essere necessario inviare la mail in copia a qualcuno). Per far questo si passa alla classe un array di dimensione 0:
2) fileName e nomeFileVis possono essere diversi: il primo indica il file fisico su disco (con tutto il percorso), mentre il secondo indica il nome che verrà visualizzato nella mail; questo significa che il file che io voglio inviare (quello in mio possesso) può chiamarsi "pippo.txt", ma voglio che il destinatario lo veda come se si chiamasse "Pluto.txt";codice:String[] cc = new String[0]
3) nomeUtente indica il nome che verrà visualizzato nel campo "From:" del destinatario (ad esempio, "LeleFT"), mentre from indica l'indirizzo e-mail associato al mittente;
4) Mentre per la conferma di lettura è possibile specificare un indirizzo a cui inviarla, per la conferma di recapito ciò non può essere fatto: la conferma di recapito torna indietro all'indirizzo e-mail del mittente. Per questo è previsto solamente un parametro booleano (confReceipt) che specifica se richiederla o meno.
Correzioni e suggerimenti sono sempre ben accetti.
Ciao.![]()



