63 messaggi dal 01 luglio 2003
Ciao a tutti,
mi accade una cosa strana, probabilmente sbaglio qualcosa...

Dunque ho costruito piccolo Forum dove gli utenti quando inseriscono un nuovo Post, viene inviata una notifica a tutti gli iscritti (circa 100 utenti), che hanno scelto di riceverla. Il problema è che spesso accade che alcune parole risultano spezzate da uno "spazio",

es: "montagna" - "mon tagna".

La cosa è sicuramente poco elegante ma il problema più grosso è quando mi spezza l'ID contenuto nel link che riporta al post sul Web per l'eventuale risposta,

es: "?id_discussione=12589" - "id_discussione=125 89".

A causa del controllo che ho inserito nella pagina, al click verrà restituito un errore gestito il quale indica che il Post non è più disponibile.

Dove sbaglio?

Il codice è il seguente:

'****************************************************************
ID_CATEGORIA = Request.Form("ID_CATEGORIA")
TITOLO       = Trim(Ucase(Request.Form("TITOLO")))
TESTO        = Replace(Request.Form("TESTO"),chr(13)&chr(10),"<br />")

Sql = "Select * FROM Tbl_DISCUSSIONI; "
       Set Rs = Server.CreateObject("ADODB.Recordset")
       Rs.Open Sql, Conn, 1, 3
       Rs.AddNew
       Rs("ID_CATEGORIA") = ID_CATEGORIA
       Rs("ID_UTENTE")    = Session("ID_UTENTE")
       Rs("TITOLO")       = TITOLO
       Rs("TESTO")        = TESTO
       Rs("DATA_ORA")     = Now()
       Rs.UpDate           
       Rs.Close()
       Set Rs = Nothing

       '/// Recupero l'ultimo record inserito
       Dim ULTIMO_RECORD
       ULTIMO_RECORD = conn.execute ("SELECT TOP 1 @@identity FROM Tbl_DISCUSSIONI").fields(0).value

 Sql = "Select EMAIL FROM Tbl_UTENTI Where NOTIFICHE = 1 ; "
        Set Rs = Server.CreateObject("ADODB.Recordset")
        Rs.Open Sql, Conn, 1, 3
  
       Set Config = Server.CreateObject("CDO.Configuration")
        Set Fields = Config.Fields
  Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 ' cdoSendUsingPort 
  Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = serv
  Fields.Update 
  Set MailObj = Server.CreateObject("CDO.Message")

  Do While Not RS.eof
  
  MailObj.From = const_email_no_replay
  MailObj.To = RS("EMAIL")
  MailObj.Subject = "Nuova discussione di: "& Session("USERNAME") &""
           
        HTML = "<font face=""Verdana"" size=""2"">"
        HTML = HTML & "Nuova discussione di <strong>" & Session("USERNAME") & "</strong> (" & FormatDateTime(Now(),1) & " - "& FormatDateTime(Now(),4) &")."
        HTML = HTML & "<br /><br />"             
        HTML = HTML & "" & TITOLO & ""                     
        HTML = HTML & "<br /><br />" 
        HTML = HTML & "" & TESTO & ""
        HTML = HTML & "<br /><br />"
        HTML = HTML & "***************************************************************"         
  HTML = HTML & "<br />"
  HTML = HTML & "<a href=""http://"& Request.ServerVariables("SERVER_NAME") & "/discussione.asp?id_discussione="& ULTIMO_RECORD &""""">Vai Alla Discussione</a>"
  HTML = HTML & "</font>"         
        
  MailObj.HTMLBody = HTML
  MailObj.Send()
    
  RS.movenext
  Loop

  Set Config = Nothing 
  Set Fields = Nothing
  Set MailObj = Nothing
        
        Rs.Close()
  Set Rs = Nothing    
'****************************************************************

Modificato da tempista il 27 gennaio 2011 16.37 -

*Tempista*
11 messaggi dal 06 settembre 2002
Dovresti farci vedere come valorizzi la variabile ULTIMO_RECORD, forse il problema è lì.
63 messaggi dal 01 luglio 2003
Ciao marcosbrana,
ti ringrazio per l'interessamento. Ho modificato il post ed aggiunto il codice che avevo omesso perché essendo fuori dal ciclo pensavo non fosse fondamentale, chiedo scusa.

Forse il problema deriva dal Replace() di: "a capo" con "<br />". Alla fine metto il testo dentro una variabile che appunto viene valorizzata prima di eseguire il ciclo quindi penso che il problema possa essere li, però è anche vero che la variabile ULTIMO_RECORD non viene passata all'interno del Replace()...

Community, cosa ne pensate voi?

*Tempista*
9 messaggi dal 26 maggio 2006
Senti tempista,
il fatto che ti vengano inseriti dei blank è davvero strano ... soprattutto se si generano nell'ID che non viene in alcun modo toccato dal replace del TESTO. In ogni caso io creerei il body della mail PRIMA DEL CICLO che usi per estrarre gli indirizzi e invio mail.
Mi piacerebbe sapere se capisci cosa crea i blank!

marg°t
63 messaggi dal 01 luglio 2003
Ciao Marg°t,
effettivamente hai ragione... Però dovrei utilizzare la proprietà "Bcc" invece di "To" per evitare che gli altri destinatari visualizzino l'indirizzo e-mail degli altri utenti. Poi mi viene da pensare che se l'indirizzo e-mail di uno dei destinatari, dovesse presentare qualche problema, gli altri riceverebbero ugualmente copia della e-mail?
Al momento non ho capito cosa provoca il problema.

*Tempista*
9 messaggi dal 26 maggio 2006
Si, se usi il bcc gli altri utenti riceverebbero lo stesso, ma non è necessario usare il bcc, puoi fare il loop dell'invio mail mantenendo il testo sempre uguale.

Comunque ti scrivo qui il codice di un mio invio a 300 utenti effettuato pochi giorni fa con immagine logo e un file allegato:
Spero possa esserti utile. A me ha funzionato bene

<%
Server.ScriptTimeout = 5000 ' questo per far sì che lo script abbia il tempo di finire senza andare in timeout

Function FormatStr(String)
on Error resume next
String = Replace(String, "'", "&acute;")
String = Replace(String, """", "&quot;")
String = Replace(String, "<", "&lt;")
String = Replace(String, ">", "&gt;")
FormatStr = String
End Function

'********** CREAZIONE MAIL DA INVIARE ALL'UTENTE ********* oggetto = "Oggetto mia mail"

testaM = "<HTML><HEAD><BASE
HREF='http://www.miosito.net/'><TITLE>miosito</TITLE>"
testaM = testaM & "<style type='text/css'> a{color: #4873A4;} a:hover {color:#b6ccdd }"
testaM = testaM & "body {font-size:12px; color:#333333; font-family erdana; margin: 10pt;}</style><body>"
testaM = testaM & "<IMG src=""cid:logoXemail"">"
testaM = testaM & "<table width='95%' border='0' cellspacing='2' style='font-size:12px; font-family erdana; BORDER: #4873A4 1px ridge;'>" testaM = testaM & "<tr><td>"

codaM = codaM & "<p>We are glad to present you an opportunity to ... " codaM = codaM & "<p>Best regards, </p><p>Miosito staff </p>" codaM = codaM & "</td></tr>"
codaM = codaM & "</table>"
codaM = "<p style='font-size:10px; font-family erdana; color:#666666'>" codaM = codaM & "Automated message - No Reply Necessary <br></p>" codaM = codaM & "</BODY></html>"

Const CdoReferenceTypeName = 1 ' questa costante si riferisce all'invio mail imgXemailUrl = Server.MapPath("/img/logoXmail.png")
imgXemailName = "logoXmail.png"

ConnString = "DRIVER={Microsoft Access Driver
(*.md };PageTimeout=5000 BQ=" & server.mappath("\database\") & "\db1.mdb" SET Conn=Server.createObject("ADODB.Connection")
SET RS=Server.createObject("ADODB.Recordset")
Conn.Open ConnString
SET RS=Conn.execute ("SELECT * FROM mailinglist order by file") do UNTIL RS.eof
RSemail = FormatStr(RS("email"))
RSname = FormatStr(RS("name"))
RSfile = RS("file")

corpoM = "<p>Dear "& RSname &", </p>"

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

objCDOSYSMail.MimeFormatted = True
objCDOSYSMail.From = "info@miosito.net"
objCDOSYSMail.To = RSemail
' objCDOSYSMail.BCC = ""
objCDOSYSMail.Subject = oggetto
objCDOSYSMail.AddAttachment(server.mappath("/mailinglist/mailingfiles/" & RSfile & ""))
objCDOSYSMail.HTMLBody = testaM & corpoM & codaM
Set objBP = objCDOSYSMail.AddRelatedBodyPart(imgXemailUrl, imgXemailName, CdoReferenceTypeName)
objBP.Fields.Item("urn:schemas:mailheader:Content-ID") = "<logoXemail>" objBP.Fields.Update

objCDOSYSMail.Send
Set objCDOSYSMail = Nothing

RS.MoveNext
LOOP
RS.close
set RS = nothing
%>

marg°t
63 messaggi dal 01 luglio 2003
Ciao marg°t,
grazie per la condivisione del tuo lavoro. La proprietà "Bcc", non permette di vedere le e-mail dei destinatari (ne sono sicuro), quindi potrebbe essere una alternativa.

Ho analizzato un po' il tuo codice ed ho visto che ometti di impostare parte delle proprietà dell'oggetto ma, in particolare ho notato che crei l'oggetto e lo distruggi ad ogni passaggio del ciclo. Io invece creo l'oggetto una sola volta e lo distruggo una volta terminato il ciclo ed inviate le tutte le e-mail. Voglio fare una prova e vedere come si comporta scrivendo il codice con la tua logica.

*Tempista*

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.