Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Upload e Invio Mail

  1. #1

    Upload e Invio Mail

    Ciao a tutti ....
    ho un problema per quanto riguarda una pagina asp di inserimento Dati.
    Vi spiego un attimo quale dovrebbe essere il risultato :
    ho un form in cui posso inserire dei dati;
    una volta inseriti i dati tramite un submit faccio l'upload del file che ho selezionato e mando una mail con l'allegato appena uplodato all'utente in questione
    il Problema e il seguente:

    il file viene uplodato correttamente e la mail viene mandata, ma 8 volte su 10 ci mette un secolo a inviarlo. Questo succede anche se non inserisco alcun allegato.
    Molto sovente mi appare il messaggio che IIS nn è riuscito a Inviare perche la sessione e scaduta e consiglia di usare lo scriptsettimeout.
    Vi posto il codice della pagina qua sotto...magari riuscite a darmi una mano nell'iserire qualche comando che velocizza il tutto. Grazie in anticipo...sto sbattendo la testa da vari giorni

    <head>
    <title>INSERISCI DOCUMENTO</title>
    <link href="stile.css" rel="stylesheet" type="text/css">
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/interface.js"></script>
    <link href="stylemenu.css" rel="stylesheet" type="text/css" />

    </head>




    <%
    Dim oUpload
    Dim oFile
    Dim sFileName
    Dim oFSO
    Dim sPath 'percorso del file
    Dim sNewData
    Dim nLength
    Dim bytBinaryData
    Dim Tipo 'campo TIPOLOGIA del form
    Dim Destinatario
    Dim Mittente 'campo PERSONA del form

    Const nForReading = 1
    Const nForWriting = 2
    Const nForAppending = 8

    Dim anno, mese, giorno, ore, minuti, secondi
    Dim Differenza3
    'data = day(date)

    ' Funzione DataInNum a cui passo una data
    ' Preleva dalla data l'anno
    anno = Year(date)
    ' Preleva dalla data il mese
    mese = Month(date)
    ' Preleva dalla data il giorno
    giorno = Day(date)
    ' Concatena i valori in un unico numero
    solodata = giorno & "/" & mese & "/" & anno

    data = giorno & mese & anno

    ore = hour(time)
    minuti = minute(time)
    secondi = second(time)

    'data = data & ore & minuti & secondi
    Orax= ore & minuti & secondi
    ' Differenza3 = DateDiff("s", Data_ricevimento, Now)

    ' grab the uploaded file data
    Set oUpload = New clsUpload

    Tipo = oUpload.ValueOf(1)' il numero contrassegnato nella parentesi sta a indicare il numero del campo ( in quest caso ) '
    Data_ricevimento = oUpload.ValueOf(2)
    Mittente = oUpload.ValueOf(3)
    Ritirato_da = oUpload.ValueOf(5)
    Data_ritiro = oUpload.ValueOf(6)
    Destinatario = oUpload.ValueOf(4)
    Priorita = oUpload.ValueOf(7)
    Mail = oUpload.ValueOf(8)
    Note = oUpload.ValueOf(9)
    Allegato = oUpload.ValueOf(10)
    StatoPosta = oUpload.ValueOf(11)


    Set oFile = oUpload("File1")

    ' parse the file name

    sFileName = oFile.FileName
    If Not InStr(sFileName, "\") = 0 Then
    sFileName = Mid(sFileName, InStrRev(sFileName, "\") + 1)
    End If

    ' Convert the binary data to Ascii
    bytBinaryData = oFile.BinaryData
    nLength = LenB(bytBinaryData)
    For nIndex = 1 To nLength
    sNewData = sNewData & Chr(AscB(MidB(bytBinaryData, nIndex, 1)))
    Next

    ' Save the file to the file system
    sPath = Server.MapPath("allegati") & "/"
    Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
    sFileName = data & "-" & sFileName
    sFileName = replace(sFileName, " ", "_")
    oFSO.OpenTextFile(sPath & sFileName, nForWriting, True).Write sNewData
    Set oFSO = Nothing

    Set oFile = Nothing
    Set oUpload = Nothing

    'Dim Differenza,Differenza2,dataP
    'dataP = data
    dataP = Data_ricevimento
    'Differenza = DateDiff("h", Orax, Date)
    'Differenza2 = DateDiff("n", Data_ricevimento, Date)

    'Differenza2=CDate(solodata)

    'response.write(Differenza2)
    dim conn, rs, rs2, rs3, rs4, rs5, sql

    ' --- costruzione stringa di connessione al db ---
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};" &_
    "DBQ="& Server.MapPath("Posta.mdb")


    'response.Write(solodata)
    'response.Write(Destinatario)
    'response.Write(Mittente)
    'response.Write(sFileName)
    'response.write (nLength) pesantezza file
    'response.write(Orax)
    ' --- preparazione connection e recordset ---


    Set cn = Server.CreateObject("Adodb.Connection")
    Set rs3 = Server.CreateObject("Adodb.Recordset")
    Set rs = Server.CreateObject("Adodb.Recordset")
    Set rs2 = Server.CreateObject("Adodb.Recordset")
    Set rs4 = Server.CreateObject("Adodb.Recordset")
    Set rs5 = Server.CreateObject("Adodb.Recordset")

    sql5 = "SELECT * FROM T_Diff ORDER BY ID desc"
    SET rs5 = conn.execute(sql5)



    Do while not rs5.EOF

    if rs5("StatoPosta") = "NO" then

    if rs5("Differenza") > 12 then

    if rs5("Sollecito") = "No" then

    to_field = Request.Querystring("to_field")
    message = Request.Querystring("message")
    'Creo l'oggetto objCDOSYSMail
    Set objCDOSYSMail = Server.CreateObject("CDO.Message")
    Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration")
    'Imposto l'SMTP
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "pop.manital.it"
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
    objCDOSYSCon.Fields.Update
    'Update the CDOSYS Configuration
    Set objCDOSYSMail.Configuration = objCDOSYSCon
    objCDOSYSMail.From = "PostaInternaManital@prova.com" ' inserire l'indirizzo ( ci deve per forza essere la @ )
    objCDOSYSMail.TO = rs5("Mail") 'passo il campo Mail per fare in modo che lo script invii all' indirizzo che si scrive sul campo mail
    objCDOSYSMail.Subject = "Avviso attivazione posta"
    objCDOSYSMail.HTMLBody = "SOLLECITO"
    objCDOSYSMail.AddAttachment server.MapPath("allegati\" & sFileName)
    objCDOSYSMail.Send


    'chiudi la connessione con l'oggetto objCDOSYSMail
    Set objCDOSYSMail = Nothing
    Set objCDOSYSCon = Nothing

    'rs5.Open "T_Diff", conn, 2, 2
    rs5.movefirst
    sqlupdate = "UPDATE T_Diff SET Sollecito = 'Si'"
    'sqlupdate1 = "UPDATE T_Diff SET Differenza = '" & Differenza & "'"
    conn.execute(sqlupdate)
    'conn.execute(sqlupdate1)
    'rs5.update

    'rs5.close
    'set rs5 = nothing
    end if

    end if

    end if

    response.write( "
    " & rs5( "Mail" ) )
    rs5.movenext
    'rs6.movenext

    Loop





    rs2.Open "T_Posta", conn, 2, 2

    ' --- aggiunta di un record ---
    rs2.addnew
    rs2("Mittente") = Mittente
    rs2("Tipo") = Tipo
    rs2("Data_ricevimento") = Data_ricevimento
    rs2("Destinatario") = Destinatario
    rs2("Ritirato_da") = Ritirato_da
    rs2("Data_ritiro") = Data_ritiro
    rs2("Priorita") = Priorita
    rs2("Mail") = Mail
    rs2("Note") = Note
    rs2("Allegato") = sFileName
    rs2("StatoPosta") = StatoPosta
    'Mail=session("Mail")
    'session("Mail")=rs2("Mail")
    rs2.update

    sql11 = "SELECT ID FROM T_Posta ORDER BY ID desc"

    set rs11 = conn.execute(sql11)


    rs11.movefirst
    IDPosta = rs11("ID")


    '
    rs.Open "T_Documenti", conn, 2, 2

    ' --- aggiunta di un record ---
    rs.addnew
    rs("Destinatario") = Destinatario
    rs("Data") = solodata
    rs("Mail") = Mail
    rs.update

    rs3.Open "T_MailR", conn, 2, 2

    ' --- aggiunta di un record ---
    rs3.addnew
    rs3("Mail") = Mail
    rs3("Ora") = Orax
    rs3("Data") = solodata
    rs3("Destinatario") = Destinatario
    rs3.update

    rs4.Open "T_Diff", conn, 2, 2

    ' --- aggiunta di un record ---
    rs4.addnew
    rs4("Mail") = Mail
    rs4("DataCorr") = DataP
    rs4("OraInvio") = Orax
    rs4("Differenza") = Differenza3
    rs4("StatoPosta") = StatoPosta
    rs4("Sollecito") = "No"
    rs4("IDPosta") = IDPosta
    rs4.update


    sql5 = "SELECT *, DateDiff('s', Data_ricevimento, 'Now') AS Differenza3 FROM T_Diff,T_Posta"


    set rs5 = conn.execute(sql5)

    do while not rs5.EOF


    'fondamentale perche senno non fa riga per riga
    Data_ricevimento = rs5("Datacorr")

    Differenza3 = DateDiff("s", Data_ricevimento, Now)

    'modifichiamo la differenza e associamo l'ID della posta


    sqlupdate1 = "UPDATE T_Diff SET Differenza = " & Differenza3 & " WHERE IDPosta=" & rs5("IDPosta")


    conn.execute(sqlupdate1)

    rs5.movenext


    loop

    '

    Dim to_field, message
    to_field = Request.Querystring("to_field")
    message = Request.Querystring("message")
    'Creo l'oggetto objCDOSYSMail
    Set objCDOSYSMail = Server.CreateObject("CDO.Message")
    Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration")
    'Imposto l'SMTP
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "pop.manital.it"
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
    objCDOSYSCon.Fields.Update
    'Update the CDOSYS Configuration
    Set objCDOSYSMail.Configuration = objCDOSYSCon
    objCDOSYSMail.From = "PostaInternaManital@prova.com" ' inserire l'indirizzo ( ci deve per forza essere la @ )
    objCDOSYSMail.TO = Mail 'passo il campo Mail per fare in modo che lo script invii all' indirizzo che si scrive sul campo mail
    objCDOSYSMail.Subject = "Avviso attivazione posta"
    objCDOSYSMail.HTMLBody = "Avviso ricezione posta presso Sede Ivrea"
    objCDOSYSMail.AddAttachment server.MapPath("allegati\" & sFileName)
    objCDOSYSMail.Send

    'chiudi la connessione con l'oggetto objCDOSYSMail
    Set objCDOSYSMail = Nothing
    Set objCDOSYSCon = Nothing


    'Dim MiaData
    'MiaData = "15/3/1994"
    'Dim Differenza, Differenza2
    'Differenza = DateDiff("yyyy", MiaData, Date)
    'Differenza2 = DateDiff("D", MiaData, Date)

    'Response.write Differenza & "-"
    'Response.write Differenza2


    'Restituisce 12/12/2003


    'Dim MiaData
    'MiaData = rs3("Data")

    'miaOra = rs3("Ora")
    'Dim Differenza, dataP
    'dataP = rs3("Data")
    'Differenza = DateDiff("h", dataP, Date)
    'Differenza2 = DateDiff("D", MiaData, Date)

    'Response.write MiaData
    'Response.write Differenza & "-"
    'Response.write Differenza2

    rs.close
    set rs = nothing
    rs2.close
    set rs2 = nothing
    conn.close
    set conn = nothing
    'rs5.close
    'set rs5 = nothing


    'cn.close()
    'set cn = nothing







    AzioneLog = "Inserita registrazione di tipo " & Tipo & " registrata il " & Data_ricevimento & " da " & Mittente & " per " & Destinatario & " con allegato " & sFileName
    %>



    <html>


    Il file &#232; stato salvato!</p>



    Indietro
    <%
    'response.redirect "visualizza.asp"
    %>
    </html>

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Sicuramente 5 Recordset (credo inutili un corretto utilizzo delle aperture/chiusure basta un Recordset) aperti e non chiusi anche la Connection non è chiusa e consumano risorse sul server, ho qualche dubbio anche sull'invio delle email, questo a prima vista.
    Poi bisognerebbe capire separando upload dall'invio email cosi da circoscrivere il problema lentezza.
    Per ottimizzare il codice bisognerebbe conoscere il progetto nel dettaglio difficilmente gestibile su un forum


    P.S. Quando scrivi il codice racchiudilo nei tag [ code/php ]....[/ code/php] usando i tasti presenti nel form
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    va bene...allora provero a dividere le 2 azioni per vedere se noto miglioramenti...

    eh si devo sistemare le aperture e chiusure

    Grazie mille

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.