+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28

Discussione: [ASP]Form invio E-Mail con allegato

  1. #1
    L'avatar di FEFE
    FEFE non è in linea Scolaretto
    Post
    125

    Exclamation [ASP]Form invio E-Mail con allegato

    Ciao a tutti,
    ho un grosso problema con l’invio di un form tramite e-mail con un allegato.
    Il problema principale è uno: riesco benissimo ad inviare un form tramite e-mail, ad inviare un form tramite e-mail con allegato un file già presente sul server e naturalmente già conosciuto (siao come nome che come percorso), sono riuscito ad effettuare l’upload di qualsiasi file su una cartella (con i relativi permessi) da me scelta, ma non riesco ad inviare un form tramite e-mail con allegato un file allegato dall’utente nel momento della compilazione del form stesso.
    Naturalmente il nome del file è legato ad una variabile che è associata all’.AddAttachment
    Sviscerando un po’ il problema, credo che la soluzione migliore sia creare:

    una pagina chiamata “modulo.asp” in cui faccio inserire all’utente i dati e il percorso del file

    una pagina “upload.asp” per effettuare l’upload

    una pagina “invio.asp” per effettuare l’invio della e-mail con l’allegato

    Purtroppo l’upload viene effettuato benissimo, la e-mail non viene inviata perchè mi dà l'errore sull'AddAttachment.
    Per piacere vi sarei grato se riusciste a darmi una mano………….non riesco da giorni ancora a venirne a capo.
    Vi posto i codici delle pagine




    "modulo.asp"
    codice:
    <form action="upload.asp" method="post" enctype="multipart/form-data">
          <input type="file" NAME="file1" size="20">
          <input type="submit" name="Submit" value="Allega!">
        </form>
    <tr>
        <td>
        <p align="left"><em><strong>File allegati: </strong></em></p>
        </td>
        <td><b><% response.Write(request.QueryString("file"))%> </b></td>
      </tr>
    <form action="mail.asp" method="post" name="modulo">
    <td width="50%">
          <p align="left"><b><i>Nome :</i></b><font color="#FF0000"> 
          (*)</font><b><i>   </i></b>
          <input type="text" name="nome" size="23" maxlength="20" class="testob"></p>
          </td>
          <td width="50%">
          </td> </tr><tr><td width="50%"><p align="left"><b><i>E-mail:</i></b><font color="#FF0000">(*)</font><b><i>  
          </i></b>
          <input type="text" name="email" size="32" maxlength="50" class="testob"></p>
          </td>
          <p align="left">
      <input type="reset" value="Cancella tutto" >
      <input name="allegato" type="hidden" id="allegato" value="<% response.Write(request.QueryString("file")) %>">
      </p>
      <p></p>
        <input type="submit" value="invia" ></p>
    </form>


    "upload.asp" questa richiama la pagina upload1.asp che permette il caricamento del file (non ve la posto perchè non serve a niente)
    codice:
    <!--#include file="upload1.asp"-->
    <%
    Dim oUpload
    Set oUpload = new cUpload
    	oUpload.SetPath "Allegati/"
    	oUpload.UploadAndSave
    Set oUpload=Nothing
    
    
    ' error managment
    If Err.Number=0 then
    
    direction="modulo.asp?file=" & filename & ""
    
    Else
    direction="about :<h1>errore!</h1>"
    End if 
    
    response.Redirect(direction)
    
    %>

    "mail.asp"
    codice:
    <!--METADATA TYPE="typelib" UUID="CD000000-8B95-11D1-82DB-00C04FB1625D" NAME="CDO for Windows 2000 Type Library" -->
    <!--METADATA TYPE="typelib" UUID="00000205-0000-0010-8000-00AA006D2EA4" NAME="ADODB Type Library" -->
    <%
    DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo
    
    	
    invioA =  "prova@prova.it"
    invioDa =  "prova@prova.it"
    nomeDominio 				= Request.ServerVariables("HTTP_HOST")
    indirizzoIp					= Request.ServerVariables("REMOTE_ADDR") 
    modulo						= Request.ServerVariables("HTTP_REFERER")
    browserSistemaOperativo		= Request.ServerVariables("HTTP_USER_AGENT")
    
    	
    FOR numeroCampi = 1 TO (Request.Form.Count() - 1)
       IF NOT Request.Form(numeroCampi) = "" THEN
          corpoMessaggio = corpoMessaggio & vbCrLf & Request.Form.Key(numeroCampi) & " = " & Trim(Request.Form(numeroCampi))
       END IF
    NEXT
    
    	
    DIM iMsg, Flds, iConf, x
    
    x = x&"---------- CONTATTO ---------- "  & vbcrlf
    x = x&"Nome: " & Request.Form("nome")  & " "  & vbcrlf
    x = x&"Cognome: " & Request.Form("cognome")  & " "  & vbcrlf
    x = x&"Mail: " & Request.Form("mail")  & " "  & vbcrlf
    x = x&"L’UTENTE - " & Session("uid") & " (indirizzo IP " & indirizzoIp & " )" & " - DICHIARA SOTTO LA PROPRIA RESPONSABILITA' CHE I DATI INSERITI SONO CORRETTI E VERITIERI." & vbcrlf
    
    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")
    Set Flds = iConf.Fields
    
    Flds(cdoSendUsingMethod) = cdoSendUsingPort
    Flds(cdoSMTPServer) = "smtp.aruba.it" 
    Flds(cdoSMTPServerPort) = 25
    Flds(cdoSMTPAuthenticate) = cdoAnonymous ' 0
    Flds.Update
    
    With iMsg
       Set .Configuration = iConf
       .To = invioA
       .From = Session("uid")
       .Sender = invioDa
       .Subject = "CONTATTO " & Request.Form("cognome") & " " & Request.Form("nome")
       .AddAttachment server.MapPath(".") & "/allegati/" & request.Form("allegato")
       .TextBody = x
       .Send
    End With
    %>


    Grazie mille.
    Ciao ciao

  2. #2
    Post
    4,741
    Blogs
    12
    Salve FEFE,
    teoricamente dovrebbe essere tutto a posto.
    Ormai e' da tempo che non scrivo una riga di codice ASP, capisco benissimo che esistono altre vie percorribili per risolvere lo stesso problema, ad esempio, evitando di effettuare vari passaggi su tante pagine e limitarsi a 2 sole pagine:

    1. Modulo;
    2. Upload su Server ed Invio E-Mail.

    Il problema sull .AddAttachment, dovresti risolverlo mostrando a video il reale nome del file presente sul server e cosa piu' importante, accertarne l'esistenza.

    A presto,
    Giuseppe Leone

  3. #3
    L'avatar di FEFE
    FEFE non è in linea Scolaretto
    Post
    125
    Ciao Master,
    grazie per il tuo consiglio, ma purtroppo non riesco a far vedere sul video il nome del file allegato......anche io sono sicuro che la soluzione risiede li.
    Come hai notato il codice che mi dovrebbe permettere di prelevare il nome del file, non funziona

    codice:
    <input name="allegato" type="hidden" id="allegato" value="<% response.Write(request.QueryString("file")) %>">
    non funziona neanche quello che mi dovrebbe far vedere a video il nome del file

    codice:
    <tr>
        <td>
        <p align="left"><em><strong>File allegati: </strong></em></p>
        </td>
        <td><b><% response.Write(request.QueryString("file"))%> </b></td>
      </tr>
    qualcuno potrebbe perdere due minuti a leggere il codice che ho postato precedentemente e a darmi una mano per la risoluzione???!!!!
    Grazie mille
    Ciao

  4. #4
    Post
    4,741
    Blogs
    12
    Ciao FEFE,
    stai dicendo che il valore di Request.Querystring("file") e' nullo ?
    Se e' cosi' dovresti controllare il file relativo all'upload ed al redirezionamento, upload.asp. Inoltre, per "non funziona" cosa intendi dire ? Visualizza qualche messaggio di errore ? Potresi fornire maggiori informazioni a riguardo. Da quanto ho capito, perdi il valore della variabile "file" da qualche parte in upload.asp

    A presto,
    Giuseppe Leone

  5. #5
    L'avatar di FEFE
    FEFE non è in linea Scolaretto
    Post
    125
    Si Mater, mi sà che hai ragione.
    Ci avevo già pensato, secondo me il problema sta nella pagina upload.asp
    Quando effettuo l'upload del file, lo stesso viene effettuato, ma nella pagina modulo.asp, non viene visualizzato il nome del file allegato.
    la URL che mi viene ridata dopo l'upload è questa http://www.dominio.it/PUBLIC/modulo.asp?file=
    ma è assente il nome del file.
    Ho chiesto ad un amico e mi ha detto che il codice della pagina di upload.asp li sembra non corretto.
    mi ha detto che dovrei inserire questa parte di codice
    codice:
    intCount = intCount + 1
    End If
    Next
    subito dopo l'upload creando cosi la pagina upload.asp

    codice:
    <!--#include file="upload1.asp"-->
    <%
    Dim oUpload
    Set oUpload = new cUpload
    	oUpload.SetPath "Allegati/"
    	oUpload.UploadAndSave
    Set oUpload=Nothing
    
    intCount = intCount + 1
    End If
    Next
    
    ' initialize the object
    Set mySmartUpload=nothing
    
    ' error managment
    If Err.Number=0 then
    
    direction="modulo.asp?file=" & filename & ""
    
    Else
    direction="about :<h1>errore!</h1>"
    End if 
    
    response.Redirect(direction)
    ma mi dà l'errore seguente (e per di più non mi allega il file)

    codice:
    Microsoft VBScript compilation error '800a0400' 
    
    Expected statement 
    
    /PUBLIC/upload.asp, line 10 
    
    End If
    Aspetto un tuo aiuto.
    Grazie.
    Ciao ciao

  6. #6
    L'avatar di FEFE
    FEFE non è in linea Scolaretto
    Post
    125
    un'altra cosa:
    ho provato ad utilizzare la request.QueryString col metodo GET e non post ma purtroppo niente da fare, mi allega il file ma non viene visualizzato il suo nome a video nella pagina modulo.

    Ciao

  7. #7
    Post
    4,741
    Blogs
    12
    Ciao FEFE,
    scusa ma forse stai cercando di arrampicarti sugli specchi:

    codice:
    intCount = intCount + 1
    End If
    Next
    Cosa sarebbe ?
    Incrementi una variabile, esci da una IF e continui un CICLO FOR ? Bene ... Ma il resto del codice iniziale non c'e' ed e' ovvio che viene fuori quel messaggio di errore li'.

    E inoltre, upload1.asp cosa sarebbe ?

    Sei un novizio di programmazione ? Se e' cosi', i miei aiuti e quelli degli altri utenti ti serviranno ben poco.

    A presto,
    Giuseppe Leone

  8. #8
    L'avatar di FEFE
    FEFE non è in linea Scolaretto
    Post
    125
    E si, non sono un programmatore, cerco di impegnari con dei buoni manuali di asp, con molta pazienza e con aiuti di miei amici che la programmazione la conoscono bene.
    la pagina upload1.asp non è nient'altro che la pagina richiamata per effettuare il ciclo per l'upload.

    Il codice che ti ho postato me l'ha consigliato un amico ma purtroppo ci siamo sentiti solo tramite telefono e quindi non ha avuto la possibilità di visualizzare l'intero codice e risolvere il problema facendomi capire dove sta l'errore.........purtroppo non è sempre libero per darmi una mano!!!
    Ecco perchè chiedo aiuto a voi.............sto cercando di far tesoro dei vostri consigli e risolvere il problema, ma fin'ora sto solo impazzendo!!!

    A quanto pare mi ha dato solo una dritta, pensavo quella fosse la soluzione invece (giustamente come mi hai fatto notare) manca una parte di codice!!!

    Aiutatemi!!!!

  9. #9
    L'avatar di FEFE
    FEFE non è in linea Scolaretto
    Post
    125
    Ciao,
    ho deciso di gestire l'upload e l'inserimento dei dati nel form in due pagione differenti:
    nella pagina modulo.asp effettuo solo l'upload
    codice:
    <form action="upload.asp" method="GET" enctype="multipart/form-data">
          <input type="file" NAME="file" size="20">
          <input type="submit" name="Submit" value="Allega!">
        </form>
        </td>
      </tr>
    nella pagina upload.asp, faccio visualizzare a video e nel campo hidden il percorso del file caricato e l'inserimento dei dati nel form

    codice:
    <!--#include file="upload1.asp"-->
    <%
    Dim oUpload
    Set oUpload = new cUpload
    	oUpload.SetPath "Allegati/"
    	oUpload.UploadAndSave
    Set oUpload=Nothing
    
    
    %>
    <tr>
        <td>
        <p align="left"><em><strong>File allegati: </strong></em></p>
        </td>
        <td><b><% response.Write(request.QueryString("file"))%> </b></td>
      </tr>
    
    <form action="mail.asp" method="post" name="modulo">
    <td width="50%">
          <p align="left"><b><i>Nome :</i></b><font color="#FF0000"> 
          (*)</font><b><i>   </i></b>
          <input type="text" name="nome" size="23" maxlength="20" class="testob"></p>
          </td>
          <td width="50%">
          </td> </tr><tr><td width="50%"><p align="left"><b><i>E-mail:</i></b><font color="#FF0000">(*)</font><b><i>  
          </i></b>
          <input type="text" name="email" size="32" maxlength="50" class="testob"></p>
          </td>
          <p align="left">
      <input type="reset" value="Cancella tutto" >
      <input name="allegato" type="hidden" id="allegato" value="<% response.Write(request.QueryString("file")) %>">
      </p>
      <p></p>
        <input type="submit" value="invia" ></p>
    </form>
    e nella pagina mail.asp effettuo l'invio della mail con il relativo allegato.

    Pensavo di essere riuscito a risolvere il problema ma purtroopo mi frega ancora il recupero di questo benedetto nome del file caricato.
    Infatti nel modolo uplpad.asp il nome del file non è nient'altro che il percorso in locale da cui si è caricati il file
    esempio: C:\Documents and Settings\FEFE\Desktop\ok55.txt
    Ciò non è corretto, dovrebbe visualizzarmi solo il nome del file e non il percorso, a me intertessa solo il nome ok55.txt
    A ragion del vero, l'invio della e-mail non avviene e mi da questo errore

    codice:
    CDO.Message.1 error '8007007b' 
    
    The filename, directory name, or volume label syntax is incorrect. 
    
    /public/mail.asp, line 116
    Questo perchè nell'addattachament mi inserisce al percorso prestabilito che ho gia impostato io

    codice:
    .AddAttachment server.MapPath(".") & "/allegati/" & request.Form("allegato")
    non il nome del file ma tutto il percorso sballandomi l'indirizzo da cui allegare il file.
    Per piacere aiutatemi!!!!

  10. #10
    Post
    4,741
    Blogs
    12
    Ciao FEFE,
    purtroppo non saprei come aiutarti, non puoi cercare di copiare / incollare parti di codice senza capire dove stai sbagliando. Ad esempio,

    codice:
    server.MapPath(".") & "/allegati/" & request.Form("allegato")
    Cosa visualizza a video ?
    Il percorso e' corretto. E pure, ASP ti restituisce un messaggio di errore abbastanza chiaro.

    A presto,
    Giuseppe Leone

+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi