Newsgroup: it.comp.lang.visual-basic
Titolo: Salvare allegato nell'allegato eml - HELP me!

Ciao a tutti!
AIUTO!!!!
 
ho un'applicativo in vb6 che legge attraverso un ciclo, tutte le mail arrivate (con Outlook 2003) e salva gli allegati.
 
 myfolder.items(j).Attachments.Item(l).SaveAsFile "pippo"
 
con l'inserimento delle PEC, gli allegati sono all'interno di un'ulteriore allegato "allegato file.eml" e vorrei capire come poterli salvare.
praticamente dovrei salvare tutti gli allegati presenti nel .eml presente nella mail.
 
Per favore aiutatemi.
mille grazie!

Gene ha scritto...

devi referenziare due librerie:
. cdosys.dll (Microsoft CDO for Windows 2000 Library)
- msado28.tlb (Microsoft ActiveX Data Objects 2.8 Library)
 
Dim strm As ADODB.Stream
Dim myMail As New CDO.Message
Dim attach As IBodyPart
Set strm = myMail.GetStream
strm.Type = ADODB.StreamTypeEnum.adTypeText
strm.LoadFromFile App.Path & "\prova.eml" <--- FILE EML D'ESEMPIO
strm.Flush
For Each attach In myMail.Attachments
    attach.SaveToFile App.Path & "\" & attach.FileName <--- ALLEGATO/I
Next
 

grazie ... ma sembra non andare. mi spiego meglio.
 
quanto effettuo:
strm.LoadFromFile "c:\tmp\postacert.msg"
oppure 
strm.LoadFromFile "c:\tmp\postacert.elm"
 
sembra non esserci nessun attach in myMail.Attachments
 
possibile? aiutatemi!!!!
 
ecco il sorgente:
 
 For l = 1 To myfolder.items(j).Attachments.Count
     mFileName = myfolder.items(j).Attachments.Item(l).DisplayName
          'Salva l'allegato in locale
     myfolder.items(j).Attachments.Item(l).SaveAsFile "C:\tmp\postacert.msg"
 Next
 
        'Per PEC
        Dim strm As ADODB.Stream
        Dim myMail As New CDO.Message
        Dim attach As IBodyPart
        Set strm = myMail.GetStream
        strm.Type = ADODB.StreamTypeEnum.adTypeText
        strm.LoadFromFile "c:\tmp\postacert.msg"
        strm.Flush
        For Each attach In myMail.Attachments
            attach.SaveToFile App.path & "\" & attach.FileName
        Next
 
 
(ho notato che se lascio .elm, outlook non mi apre il file mentre se lo rinomino in .msg riesce ad aprire la mail correttamente).

Gene ha scritto...

Io prima di postarlo l'ho provato � funziona perfettamente, per fare la 
prova ho preso un mio messaggio dal programma di posta e l'ho trascinato sul 
DeskTop. Il programma di posta a questo punto ha creato un valido file .eml 
con il quale ho testato la routine.
Sei sicuro che i messaggi che stai analizzando contengano allegati?
Sei sicuro che i messaggi esportati siano nel formato corretto .eml?
Ti sei ovviamente accorto che sta salvando eventualmente gli allegati in 
App.path & "\" & attach.FileName"!
 

Ciao Federico, ti confermo tutto e soprattutto son sicuro che nella mail vi sono gli allegati.
spiego nel dettaglio la situazione...forse ci siamo persi qualche passaggio fondamentale.
partiamo dalla mail pec ricevuta: essa contiene 2 allegati:
daticert.xml e postacert.elm(126KB)
 
tramite la seguente istruzione (contenuta in un ciclo)
myfolder.items(j).Attachments.Item(l).SaveAsFile "c:\tmp\" & mFileName
 
mi salva il segunete file:
postacert.eml (126 KB)
 
se invece io la trascino fuori (da outlook), mi salva il segunete file:
postacert.eml (126 KB).msg
 
ora: in entrambi i casi, non riesco ad estrapolare nulla tramite la tua routine.
(anche se si rinomino in .elm oppure .msg
 
non ne capisco il motivo.
 
Può la tua routine estrarre gli allegati anche da file .msg? in tal caso credo che sia questa l'estensione esatta su cui lavorarci poichè è l'unica che con il doppio click mi apre regolarmente la mail (e mi mostra gli allegati) tramite outlook.
 
Aiutoooo! 
grazie mille!

grazie mille!