Newsgroup: it.comp.lang.visual-basic
Titolo: [Lunghetto] Gli allegati della mail

Sto cercando di ultimare il progetto su cui sto lavorando da una settimana
circa.
Si tratta un sistema di generazione ed invio automatico di mappe tematizzate
attraverso richieste inviate via mail.
In pratica l'utente invia una mail al sistema allegando i parametri di
tematizzazione in un file TXT e il sistema risponde con una mail contenente
in allegato il JPG della mappa.
Per la gestione della posta elettronica non ho voluto utilizzare le MAPI con
Outlook Express perche' non e' possibile utilizzare + account di posta, ma
solo il predefinito.
Per questo motivo ho dovuto sviluppare ex novo un sistema di invio/ricezione
mail e quindi studiarmi i metodi di decoding/encoding, ecc.
La cosa + complicata che ho riscontrato e' la gestione degli allegati, in
quanto c'e' + di un modo per codificarli e formattarli all'interno della
mail.
il programma di esempio di SMTP presente sul sito comune,  invia ad esempio
gli allegati non utilizzando il sistema del "multipart" utilizzato
praticamente da tutti i software di posta elettronica.
In ogni caso nel caso nella gestione di allegati di tipo binario la codifica
utilizzata e' sempre il MIME64 e il modo di allegarli puo' essere quello
usato dal programma di esempio (ovvero l'utilizzo delle etichette
begin...end) oppure il multipart.
Il problema vero pero' sorge quando gli allegati sono file ASCII, perche'
possono essere formattati in svariati modi e non so ancora se sono riuscito
a rintracciarli tutti.
In particolare sto avendo qualche difficolta' con la codifica 8 bit in
formato flowed.
Questo tipo di formattazione inserisce degli "a capo" (CRLF) che non riesco
a rintracciare, o meglio a differenziare da quelli effettivamente contenuti
nel file sorgente.
Infatti mentre per il formato "quoted-printable" i CRLF di formattazione
vengono preceduti dal simbolo "=", nel formato "flowed" non c'e' nessun
identificativo.
Esempio 1:
Content-Type: text/plain;
 name="test.txt"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename="test.txt"
File di testo da allegare per provare i metodi di =
formattazione utilizzati nell'invio della posta elettronica.
File di testo da allegare per provare i metodi di =
formattazione utilizzati nell'invio della posta elettronica.
Esempio 2:
Content-Type: text/plain; name="test.txt"; format=flowed
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="test.txt"
File di testo da allegare per provare i metodi di formattazione
utilizzati nell'invio della posta elettronica.
File di testo da allegare per provare i metodi di formattazione
utilizzati nell'invio della posta elettronica.
Dopo tutto questo trattato ecco finalmente la domanda: nel esempio 2 come
faccio a capire che il CRLF presente tra "formattazione" e "utilizzati" deve
essere eliminato e quello dopo "elettronica." invece no?
Oltre al "quoted-printable" e il "flowed" siete a conoscenza di altri metodi
di formattazione?
Scusate la lunghezza del post ma ho pensato che potesse essere utile
spiegare un po' le problematiche in applicazioni di questo tipo.
--
Starman

 begin...end) oppure il multipart.
Considerazione.... perchč non usi il MIME64 per tutti i files? anche per
quelli ASCII, se va bene per i binari, va bene anche per gli ascii... no?
(anche se magari č meno efficente.. ma chettifrega? l'importante č che la
mail arrivi sana e salva :-)
Max

 ha scritto nel messaggio
news:9hun30$bat$1...@fe2.cs.interbusiness.it...
[...]


 Considerazione.... perchè non usi il MIME64 per tutti i files?
Perche' il problema ce l'ho in ricezione non nell'invio dove ovviamente uso
il mime64 dovendo inviare un file binario JPG.
Le mail mi potrebbero arrivare da chi usa outlook, oppure invia mail dal
web, ecc. ecc.
Devo per forza essere in grado di leggere tutti i possibili formati.
--
Starman

 Sei sicuro ceh quelli di formattazione siano CRLF.
Anche io avevo pensato la stessa cosa. Purtroppo da una prima verifica si
tratta in entrambi in casi di CRLF.
Ci guardero' meglio ma ne sono quasi certo, purtroppo.
--
Starman

 ha scritto nel messaggio
news:9hv62c$3s5$1...@fe2.cs.interbusiness.it...

opps.... ho capito :-)
Max

 identificativo.
Da quel che avevo capito io il formato quoted-printable prevede che ogni
riga termini con un CRLF.
Nel formato flowed invece il CRLF c'e' solo a fine paragrafo, mentre l'acapo
viene gestito automaticamente dall'editor (hai presente come fa il word?).
Non sono sicuro di ricordare bene, comunque il formato flowed e' spiegato
in dettaglio nella RFC 2646.
-- 
Samuele Battarra
mail server: 
libero.it
, account: battarsa
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/leggiminews.html

 in dettaglio nella RFC 2646.
Bueno! Vado a cercare subito info...
Hai un url al volo?
--
Starman

 in dettaglio nella RFC 2646.
Svelato l'arcano. Il formato flowed va a capo (forzatamente) quando puo'
spezzare la frase e quindi cercando un spazio entro le prime 79 colonne.
Nell'andare a capo lascia uno spazio prima del CRLF cosa che non succede per
il CRLF contenuti nel testo originale.
In definitiva:
una volta avuto il testo allegato in una stringa basta una istruzione del
genere per convertire in formato standard:
' Per il formato flowed
strData = replace(strData, " " & vbCrLf, "")
' Per il quoted-printable
strData = replace(strData, "=" & vbCrLf, "")
dove replace e':
Private Function replace(ByVal s As String, ByVal sReplace As String, ByVal
sWith As String) As String
   Dim p As Long
   p = InStr(s, sReplace)
   While p > 0
      s = Left(s, p - 1) & sWith & Mid(s, p + Len(sReplace))
      p = InStr(s, sReplace)
   Wend
   replace = s
End Function
--
Starman

 
Di solito uso 
www.ietf.org
, anche se la pagina di
ricerca non e' proprio in bella mostra, ma c'e'.


 
In VB6 Replace e' una funzione di sistema.
Non occorre riscriversela.
