Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di capsula
    Registrato dal
    Jan 2006
    Messaggi
    818

    Problemi vari con Invio Mail da Form

    Salve a tutti, ho reso un sito da html a asp, senza pretese eh, anche perchè ho dovuto scegleire asp per questioni di hosting ed è un linguaggio che non conosco così ho dovuto imparar le due cose che mi servivano...

    Ora mi trovo a dover organizzare un form di contatto (quelli del tipo "lavora con noi") e la realtiva pagina che cattura i dati dal form e li invia via email.

    Ho alcuni problemi da risolvere e quindi vi posto i codici.
    Premetto che in questo form nella sua parte centrale deve cambiare a seconda della pagina d provenienza (e questa cosa accade correttamente) perchè vengono visualizzati alcuni campi se la persona che compila il form si sta proponendo per il lavoro nella parte commerciale, tecnica o di rivenditore (alcuni esempi...).

    Ecco i codici: (per comodità di forum dei campi che la pagina raccoglie correttamente metto solo i fondamentali, altri li ometto lasciando spazio a quelli che mi creano problemi)


    Il form:
    Codice PHP:

    <form method="post" name="inviacurriculum" id="inviacurriculum" action="inviomail.asp" >
        <
    fieldset id="anagrafe">
            <
    legend>[b]DATI PERSONALI[/b]</legend>
            <
    label for="cognome">* Cognome: </label> <input name="cognome" size="30" tabindex="1" id="cognome" />
            <
    label for="email">* E-mail: </label> <input name="email" size="30" tabindex="6" id="email" /> 
            <
    label for="cognome">* Tel: </label> <input name="tel" size="30" tabindex="7" id="telefono" /> [no spazi o separatori]
        </
    fieldset>

    (
    omessi dati come nomesesso ecc che non servivano qui)
        
        

      
      
          <
    fieldset id="ruolo">
      
            <
    legend>[b]RUOLO[/b]</legend>


            


    <%if 
    request("jobform")="formcommerciale" then %>
        <
    input name="tipo_contatto" type="hidden" value="contatto_commerciale" />

    (
    questo campo lo ho messo per capire dopo nell'invio email che sezione specifica devo controllare e quindi inviare per email solo i campi di quella sezione)

        <label for="arealavoro">Area di lavoro: </label> [b] COMMERCIALE [/b] 


        <label for="lingue">Lingue straniere conosciute: (se di sufficiente livello sia scritto che orale)</label> 

            <input name="lingua" id="lingua" type="checkbox" tabindex="8" value="Inglese" /> Inglese 

            <input name="lingua" id="lingua" type="checkbox" tabindex="8" value="Francese" /> Francese 

            <input name="lingua" id="lingua" type="checkbox" tabindex="8" value="Tedesco" /> Tedesco 

    Olandese 

            <input name="lingua" id="lingua" type="checkbox" tabindex="8" value="Altro" /> Altro (specificare nel campo Note) 

      </fieldset>

    <%end if%>




    <%if request("jobform")="formtecnico" then %>
        <input name="tipo_contatto" type="hidden" value="contatto_tecnico" />

        <label for="arealavoro">Area di lavoro: </label> [b] TECNICO [/b] 


    <%end if%>




    <%if request("jobform")="formrivenditore" then %>

        <input name="tipo_contatto" type="hidden" value="contatto_rivenditore" />
        
        <label for="arealavoro">Area di lavoro: </label> [b] RIVENDITORE DI ZONA [/b] 


        
        <label for="regione">Regione:</label> 

            <input name="regione" id="regione" type="checkbox" tabindex="8" value="Abruzzo" /> Abruzzo 

            <input name="regione" id="regione" type="checkbox" tabindex="8" value="Calabria" /> Calabria 

            <input name="regione" id="regione" type="checkbox" tabindex="8" value="Campania" /> Campania 

            <input name="regione" id="regione" type="checkbox" tabindex="8" value="Emilia-Romagna" /> Emilia-Romagna 

            [ecc ecc]
            <input name="regione" id="regione" type="checkbox" tabindex="8" value="Estero" /> STATI ESTERI (specificare nella sezione Note) 


    <%end if%> 
     
     
      

                  

                <label for="note">Note</label>

                      <textarea id="note" cols="60" rows="10" tabindex="9"> </textarea>
                


                
                <label for="carica">Carica il tuo Curriculum Vitae:</label> <input name="upload" type="file" id="file" tabindex="10" size="30" />
        
        </fieldset>
      



      
      <fieldset id="autorizza">

          <input type="submit" id="submit" tabindex="11" value="Invia richiesta" />
          <input type="reset" id="reset" tabindex="12" value="Cancella" />
      
      </fieldset>

    </form> 



    Bene, ora la relativa pagina INVIOMAIL.ASP. Il codice non è mio ma son partito da una base trovata in internet a cui ho aggiunto i campi che mi servivano e iserito gli if di controllo e il body della mail.

    Codice PHP:
    <%
    Option Explicit

    dim fCognome
    fNomefSessofDatanascitafEmailfTelfTipocontattofNote
    (alcuni campi non li vedete nel form di prima perchè tanto li legge correttamente e ho risparmiato righe inutili da farvi leggere)


    fCognome Request.Form("cognome")
    fNome Request.Form("nome")
    fSesso Request.Form("sesso")
    fDatanascita Request.Form("datanascita")
    fEmail Request.Form("email")
    fTel Request.Form("tel")
    fTipocontatto Request.Form("tipo_contatto")  [legge il campo hidden di cui parlavo sopra per indicare nella mail per che sezione lavorativa si propone la persona]
    fNote Request.Form("notevarie")

    [
    manca la cosa dell'allegare il file che non so come si fa con asp]




    if fTipocontatto="contatto_commerciale" then
        dim fLingua

        fLingua = Request.Form("lingua")
    end if


    '
    if fTipocontatto="contatto_tecnico" then
    [devo ancora decidere qui che campi inserire per la parte tecnica così intanto lascio il codice commentato]
    'end if


    if fTipocontatto="contatto_rivenditore" then
        dim fRegione

        fRegione = Request.Form("regione")
    end if


    response.write fCognome + "  " + fNome + "  " + fSesso + "  " + fDatanascita + "  " + fEmail + "  " + fTel + "  " + fTipocontatto + "  lingua:" + fLingua + "  regione:" + fRegione + " note:" + fNote


    dim oMail
    Set oMail = Server.CreateObject("CDONTS.NewMail")
    oMail.To = "***@***.it"
    oMail.From = "+++@+++.it"
    oMail.Subject = "email di prova"



    oMail.Body = "Nuova proposta 

    " &_ 
        "Tipo di contatto: " + fTipocontatto + "

    " &_
        
        "Cognome: " + fCognome + "
    " &_
        "Nome: " + fNome + "
    " &_
        "Sesso: " + fSesso + "
    " &_
        "Data di nascita: " + fDatanascita + "
    " &_
        "Email: " + fEmail + "
    " &_
        "Tel: " + fTel + "


    " &_
        
        
        
        "Informazioni specifiche di sezione: 
    "
        
        if fTipocontatto = "contatto_commerciale" then
            oMail.Body = oMail.Body + "Lingue conosciute: " + fLingua + "
    "
        end if
        
        
        '
    if fTipocontatto "contatto_tecnico" then
        
        
    'end if
        
        
        if fTipocontatto = "contatto_rivenditore" then
            oMail.Body = oMail.Body + "Zone di interesse: " + fRegione + "
    "
        end if
        
        
        oMail.Body = oMail.Body + "

    " &_
        
        "Note: " + fNote + "

    " &_
        
        "FINE DATI EMAIL"


    oMail.Importance = 1 ' 
    0=bassa1=normale 2=alta
    oMail
    .BodyFormat ' 0=HTML, 1=testo
    oMail.MailFormat = 1 ' 
    0=MIME 1=testo
    oMail
    .Send
    Set oMail 
    Nothing
    response
    .write "Messaggio inviato"
    %> 
    Ora i problemi che ho sono:

    1. quando invio il form a video come vedete stampo (per controllo in fase di progettazione) i dati letti dal form. Lui legge le lingue e le regioni, quindi riconosce le "sezione di provenienza" (commerciale ecc) però non legge la textarea note, anche se nel form scrivo qualcosa nella textarea Note lui non me la stampa dopo a video, quindi non la riceve e non capisco il perchè.

    2. sempre quando premo invia nel form a video compare sempre un errore,
    Microsoft VBScript runtime error '800a01b6'

    Object doesn't support this property or method: 'Body'

    inviomail.asp, line 75
    che si riferisce in questo caso alla porzione di codice con l'ultimo if di controllo (in base alla sezione ovviamente), in sto caso
    Codice PHP:
    if fTipocontatto "contatto_rivenditore" then
            oMail
    .Body oMail.Body "Zone di interesse: " fRegione "
    "
        
    end if 
    sempre qualla dove c'è sto oMail.Body insomma... e non capisco cosa sia.
    i "&_" servono per andare a capo con il codice e non credo sia sbagliato quello, no?

    3. Non invia la mail perchè non stampa mai a video la conferma e quindi non esegue nemmeno l'istruzione "response.write "Messaggio inviato" "

    4. la mail, impostata come html dal parametro "oMail.BodyFormat = 0 ' 0=HTML, 1=testo" ho provato una volta a levare tutti gli if di controllo che danno problemi (vedi punto 2) e non mi arriva come html, ossia io nel testo della mail leggo "
    " quando invece dovrei vederne il risultato, ossia un a capo. Come mai?

    5. Non ho idea di come si possa fare per l'allegare un file, ma prima spero di poter risolvere gli altri 4 punti



    So che ho scritto tanto e lungo ma ho cercato di essere il più chiaro possibile, se non ho ben spiegato qualcosa ditemelo che cercherò di chiarire.

    Spero che qualcuno mi aiuti così che riesca a risolvere

  2. #2
    Utente di HTML.it L'avatar di iceblu
    Registrato dal
    Jun 2006
    Messaggi
    246
    1) devi impostare la proprietà name oltre che l'id per la textarea
    2) la proprietà body non esiste (TextBody o HTMLBody)
    3) non parte per il punto 2 qui sopra.
    4) usa .HTMLBody

    Cmq tu usi CDO che è deprecato usa CDOSYS

    Set myMail = Server.CreateObject("CDO.Message")

    che è + flessibile

  3. #3
    Utente di HTML.it L'avatar di capsula
    Registrato dal
    Jan 2006
    Messaggi
    818
    Originariamente inviato da iceblu
    1) devi impostare la proprietà name oltre che l'id per la textarea
    2) la proprietà body non esiste (TextBody o HTMLBody)
    3) non parte per il punto 2 qui sopra.
    4) usa .HTMLBody

    Cmq tu usi CDO che è deprecato usa CDOSYS

    Set myMail = Server.CreateObject("CDO.Message")

    che è + flessibile
    grazie mille, ora funziona!!

    Ho dovuto levare in fondo
    Codice PHP:
    oMail.Importance ' 0=bassa, 1=normale , 2=alta 
    oMail.BodyFormat = 0 ' 
    0=HTML1=testo 
    oMail
    .MailFormat ' 0=MIME , 1=testo 
    perchè mi diceva che non era supportata!


    Mi sapresti aiutare con il fatto del poter allegare un file dal form e che questo venga inviato? Il massimo sarebbe controllare formato e dimensione e permettere l'invio dei file solo in formato .doc, .odt, .pdf e delle dimensioni minori a 512KB... però non ho idea di come si faccia, ne il controllo ne l'allegare il file...

  4. #4
    Utente di HTML.it L'avatar di capsula
    Registrato dal
    Jan 2006
    Messaggi
    818
    UP... nessuno mi sa aiutare? perfavore...

  5. #5
    Utente di HTML.it L'avatar di iceblu
    Registrato dal
    Jun 2006
    Messaggi
    246
    I controlli sul file da allegare lo fai utilizzando FSO

    http://www.w3schools.com/asp/asp_ref_filesystem.asp

    e per l'attach di un file

    oMail.AddAttachment "c:\temp\readme.txt" 'path del tuo file usa Server.Mappath in caso di dubbi...

  6. #6
    Utente di HTML.it L'avatar di capsula
    Registrato dal
    Jan 2006
    Messaggi
    818
    Grazie dei link ma non capisco come si possa fare... mi sai aiutare o postare un esempio pratico?


    Se ho ben capito, correggetemi se sbaglio, per far il modo che chi compila il forum mi possa mandare nella mail un file residente nel pc dell'utente (un .doc o un .pdf ad esempio) l'asp funziona così:
    - prima il file viene caricato nel server in una cartella che dico io (come non lo ho capito).
    - poi il file mi viene spedito in allegato con la mail che parte alla conferma di compilazione del forum
    - poi il file che fine fa dal server? viene cancellato?

  7. #7
    Utente di HTML.it L'avatar di iceblu
    Registrato dal
    Jun 2006
    Messaggi
    246
    mi sai aiutare o postare un esempio pratico?
    No, ti cerchi CDOSYS su questo fourm
    oppure vai e ti scarichi questo
    http://vademecum.aruba.it/start/cont...ulo_cdosys.asp

    prima il file viene caricato nel server in una cartella che dico io (come non lo ho capito).
    Cerca upload su questo fourm

    poi il file mi viene spedito in allegato con la mail che parte alla conferma di compilazione del forum
    che in ASP tramite CDOSYS si fa con:

    Codice PHP:
    oMail.AddAttachment "c:\temp\readme.txt" 'path del tuo file usa Server.Mappath in caso di dubbi... 

    - poi il file che fine fa dal server? viene cancellato?
    Esiste il libero arbitrio...se vuoi te lo cancelli

    Edit: ti ho aggiunto il link all'esempio CDOSYS

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 © 2026 vBulletin Solutions, Inc. All rights reserved.