Newsgroup: it.comp.lang.visual-basic
Titolo: [?] shellexecute e mailto...

Salve a tutti.
Situazione: sto creando una applicazione che gestisce gli iscritti ad una
associazione.... selezionando alcuni di essi, tramite shellexecute cerco di
spedire una email (tutti gli indirizzi in bcc)...
Problema: la stringa contenente gli indirizzi mi viene troncata... o meglio,
quando si apre la finestra del nuovo messaggio (nel mio caso outlook98, dal
cliente OE) non tutti gli indirizzi sono presenti (potrebbero essere, al
limite, anche + di 500)
Ho notato che nè O98 nè OE hanno problemi a gestire una lista di destinatari
esageratamente corposa (ho provato ad inserire tutti quelli che ho in
rubrica e non ho avuto alcun problema...), quindi presumo sia un limite
della chiamata tramite shellexecute...
Qualche suggerimento???
Ringrazio anticipatamente..
Stefano



Non mi pronuncio sulla natura del problema: prima dovrei fare qualche prova, però un'alternativa
potrebbe essere quella di spedire le mail direttamente da VB: sul Sito Comune ci sono un paio di
esempi...
Ciao,
Moreno
#sirri#@#morenosoft#.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.msvbsite.net
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.it-lang-vb.net
---------------------------------------------------------------------------




il gestore delle mail....
Prova a postare il codice che usi...


Ecco il codice... sotto nt nessun problema (tranne il troncamento), in W98
non parte.. il codice errore è SE_ERR_FNF
****************************************************
Public Sub SendMail(Optional Address As String, _
    Optional Subject As String, Optional Body As String, _
    Optional CC As String, Optional BCC As String)
    Dim r As Long
    Dim strCommand As String
    'Build up the mail string
    If Len(Subject) Then strCommand = "&Subject=" & Subject
    If Len(Body) Then strCommand = strCommand & "&Body=" & Body
    If Len(CC) Then strCommand = strCommand & "&CC=" & CC
    If Len(BCC) Then strCommand = strCommand & "&BCC=" & BCC
    'Replace the first ampersand, if any,
    'with a question mark
    If Len(strCommand) Then
        Mid(strCommand, 1, 1) = "?"
    End If
    'Add mailto: command and main e-mail
    'address to the command string
    strCommand = "mailto:" & Address & strCommand & Chr(0)
    'Execute command via the API
    r = ShellExecute(GetDesktopWindow(), "open", strCommand, _
            vbNullString, vbNullString, SW_SHOWNORMAL)
    If r <= 32 Then
        'There was an error
        Dim msg As String
        Select Case r
            Case SE_ERR_FNF
                msg = "File not found"
            Case SE_ERR_PNF
                msg = "Path not found"
            Case SE_ERR_ACCESSDENIED
                msg = "Access denied"
            Case SE_ERR_OOM
                msg = "Out of memory"
            Case SE_ERR_DLLNOTFOUND
                msg = "DLL not found"
            Case SE_ERR_SHARE
                msg = "A sharing violation occurred"
            Case SE_ERR_ASSOCINCOMPLETE
                msg = "Incomplete or invalid file association"
            Case SE_ERR_DDETIMEOUT
                msg = "DDE Time out"
            Case SE_ERR_DDEFAIL
                msg = "DDE transaction failed"
            Case SE_ERR_DDEBUSY
                msg = "DDE busy"
            Case SE_ERR_NOASSOC
                msg = "No association for file extension"
            Case ERROR_BAD_FORMAT
                msg = "Invalid EXE file or error in EXE image"
            Case Else
                msg = "Unknown error"
        End Select
        MsgBox msg
    End If
End Sub
******************************************************
Saluti
Stefano

Arieccomi... ho fatto un po' di ricerche e di prove... e di scoperte!!
* ho scoperto che il passaggio dei parametri tramite shellexecute non
funziona neanche su w98 (ed ho letto che lo stesso problema esiste anche in
w2000 nonostante quanto affermato da M$
* ho provato a creare un collegamento (shortcut, file .url) contenente il
comando secondo la sintassi
"mailto:?bcc=<email>;<email>;<email>;<email>;<email>;
e richiamandolo tramite shellexecute(GetDesktopWindow(), "open", app.path &
"\msg.url", vbNullString, vbNullString, SW_SHOWNORMAL) ma il risultato non
cambia, la lista viene troncata
* cercando sui newsgroups, ho trovato questo:
"The limit is INTERNET_MAX_URL_LENGTH.  It's not documented anywhere, but in
general there should be no reason to pass anything longer than that as the
lpFile since the only things you can put there are filenames (MAX_PATH) and
URLs (INTERNET_MAX_URL_LENGTH)."
Sostanzialmente non c'č modo di passare la lista dei parametri se supera i
260 caratteri......
Qualche idea?? C'č il modo di pilotare OE? Ho guardato tra i possibili
riferimenti inseribili nel progetto ma non ho trovato niente che avesse a
che fare con OE...
Saluti
Stefano


Ho avuto lo stesso problema non con il destinatario ma con il body del
messaggio. Il problema però secondo me è lo stesso: ShellExecute non
gestisce una stringa di parametro troppo lunga (forse 512 a occhio e croce).
--
Lawrence Lebowsky
#marcone#@#sidsrl#.it