Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168

    errore form CDOSYS + upload

    Ciao a tutti!
    Ho un modulo di contatto/inviocurriculum (con selezione del destinatario) che, oltre ad inviare una e-mail (utilizzando CDOSYS), esegue l'upload di files (di dimensioni medio/piccole, dunque l'esempio di aruba mi va benissimo).
    Lo scopo è (anche) quello di permettere ad un potenziale candidato di inviare una email e di allegare (uploadare) il proprio curriculum (al destinatario arriverà quindi una e-mail con l'url dove poter scaricare il file del CV).
    Nel "miscelare" i codici di queste 2 funzionalità all'interno di un'unica pagina asp (l'ordine è: 1) upload - 2) invio e-mail), dapprima sono incorsa in errori di incompatibilità tra "Request.BinaryRead" (dell'upload) ed i vari "Request.Form" (passati dal form), ma li ho ben presto risolti sostituendo a questi ultimi l'istruzione UploadRequest.Item("nomecampoform").Item("Value").
    Tutto bene fin quando, anzichè passare il contenuto di un campo di tipo testo, passo il contenuto di un campo selezionato da un menu a tendina, nel mio caso specifico il destinatario.

    L'errore che ottengo è il seguente:

    codice:
    CDO.Message.1 error '8004020c' 
    
    È necessario specificare almeno un destinatario, ma non ne è stato trovato alcuno. 
    
    formcdosys.asp, line 122
    Cosa c'è che non va? Perchè i campi di testo li passo regolarmente mentre il destinatario, selezionato da un menu a tendina (input type select), non me lo passa?

    Il codice del menu a tendina nel form è il seguente:

    codice:
    <select name="destinatario">
    <option>Scegliere un destinatario...</option>
    <option value="email1">Informazioni</option>
    <option value="email2">Ufficio Vendite</option>
    <option value="email3">Ufficio Commerciale</option>
    <option value="email4">Invio Curriculum Vitae</option>
    </select>
    Mentre il codice dell'upload + invio è il seguente:

    codice:
    
    
    <%
    Response.Expires=0
      Response.Buffer = TRUE
      Response.Clear
      byteCount = Request.TotalBytes
      RequestBin = Request.BinaryRead(byteCount)
      Dim UploadRequest
      Set UploadRequest = CreateObject("Scripting.Dictionary")
      BuildUploadRequest  RequestBin
      contentType = UploadRequest.Item("blob").Item("ContentType")
      filepathname = UploadRequest.Item("blob").Item("FileName")
    
      vardestinatario=UploadRequest.Item("destinatario").Item("Value")
      varnome=UploadRequest.Item("nome").Item("Value")
      varazienda=UploadRequest.Item("azienda").Item("Value")
      varemail=UploadRequest.Item("email").Item("Value")
      varmessaggio=UploadRequest.Item("messaggio").Item("Value")
      varblob=UploadRequest.Item("blob").Item("Value")
    
      filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
      value = UploadRequest.Item("blob").Item("Value")
    
      'Create FileSytemObject Component
      Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
    
      'Create and Write to a File
      pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
      Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Request.ServerVariables("PATH_INFO")),pathEnd) & filename)
     
      For i = 1 to LenB(value)
    	 MyFile.Write chr(AscB(MidB(value,i,1)))
      Next
      MyFile.Close
    %>
    
    
    
    
    <%
    DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo
    
    If vardestinatario = "email1" Then 
    invioA = "casella1@dominio.it"
    ElseIf vardestinatario = "email2" Then 
    invioA = "casella2@dominio.it"
    ElseIf vardestinatario = "email3" Then 
    invioA = "casella3@dominio.it"
    ElseIf vardestinatario = "email4" Then 
    invioA = "casella4@dominio.it"
    End If
    
    invioDa = varemail
    
    nomeDominio = Request.ServerVariables("HTTP_HOST")
    indirizzoIp = Request.ServerVariables("REMOTE_ADDR") 
    modulo = Request.ServerVariables("HTTP_REFERER")
    browserSistemaOperativo = Request.ServerVariables("HTTP_USER_AGENT")
    
    If varblob = "" Then
          	   corpoMessaggio = vbCrLf & "Nome: " & varnome & vbCrLf & "Azienda: " & varazienda & vbCrLf & "E-mail: " & varemail & vbCrLf & "Messaggio: "  & vbCrLf & varmessaggio
    Else
    	   corpoMessaggio = vbCrLf & "Nome: " & varnome & vbCrLf & "E-mail: " & varemail & vbCrLf & "File del C.V.: http://www.dominio.it/public/cv/" & varblob & vbCrLf & "Messaggio: "  & vbCrLf & varmessaggio
    End If
    
    	'* creo gli oggetti cdosys sul server e li gestisco
    	
    DIM iMsg, Flds, iConf
    
    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 = varemail
       .Sender = invioDa
    	   If varblob = "" Then
    	   .Subject = "Messaggio dal sito"
    	   Else
    	   .Subject = "Curriculum Vitae dal sito"
    	   End If
       .TextBody = "Questi i dati inseriti nel modulo di contatto presente sul sito PippoPluto all'indirizzo " & modulo & "):" & vbCrLf & corpoMessaggio & "" 
       .Send
    End With
    %> 
    <script>
    document.location.replace('/contatti_ok.asp');
    </script>
    Vi ringrazio per qualunque aiuto potrete darmi!

    t.

  2. #2
    Ciao,
    io quando ho lavorato con l'upload ho utilizzato degli script che utilizzavano le classi e dipendeva da dove richiedevo i dati.

    Dovevo richiederli tutti in un punto ben preciso altrimenti nulla da fare, però alla fine sono riuscito a fare tutto ciò che dovevo!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168
    Ciao,
    ti ringrazio per l'indicazione ma al momento ho necessità di utilizzare il classico script di upload messo a disposizione da aruba.
    Ad ogni modo il problema, a quanto capisco, riguarda il modulo di contatto e, nella fattispecie, il motivo per cui se passo un input di tipo testo il valore mi viene passato regolarmente, mentre se passo un input da un menu a tendina (select option, etc...), questo non mi viene passato, infatti mi dice che non è stato selezionato alcun destinatario, quando invece è stato selezionato...
    Un grazie a quanti sapranno aiutarmi!
    t.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.