Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    residenza
    San Marino
    Messaggi
    54

    [ASP] CDO e notifica lettura

    Salve
    invio mail in ASP con CDO (e funziona), questo è il "cuore" del codice funzionante:

    sConfig = "http://schemas.microsoft.com/cdo/configuration/"
    msgUtente.Configuration.Fields.Item(sConfig & "sendusing") = 2
    msgUtente.Configuration.Fields.Item(sConfig & "smtpserver") = strMailServer
    msgUtente.Configuration.Fields.Item(sConfig & "smtpauthenticate") = 1
    msgUtente.Configuration.Fields.Item(sConfig & "sendusername") = strUtente
    msgUtente.Configuration.Fields.Item(sConfig & "sendpassword") = strPassword

    msgUtente.Configuration.Fields.Update
    .Send

    Il cliente mi ha cliesto "è possibile aggiungere la notifica di lettura alle mail inviate"?
    In pratica l'equivalente del flag "richiedi conferma lettura per il messaggio" di Outlook (usa Outlook 2000).

    Come devo cambiare il codice di cui sopra?
    Ho trovato sul web varie soluzioni tipo quella di seguito riportata, ma non funzionano, probabilmente sbaglio qualche cosa nella sintassi (e non ne so abbastanza per capire cosa) quando cerco di integrarlo con il codice esistente:

    .fields("urn:schemas:mailheader:disposition-notification-to") = strMittente
    .fields("urn:schemas:mailheader:return-receipt-to") = strMittente
    .DSNOptions = cdoDSNSuccessFailOrDelay
    .DSNOptions = 14

    Io inserisco queste 4 righe prima delle 2 righe finali del codice funzionante ma senza risultato.
    Dove sbaglio?
    Ho fatto una cinquantina di tentativi e confesso che comincio ad avere inquietanti visioni mistiche...
    Mi aiutate?
    Grazie.
    PEO from RSM
    www.peogio.net

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2010
    residenza
    San Marino
    Messaggi
    54
    Ho risolto!
    Mi sembra di aver capito che non dipendeva dal mio codice (magari uno dei 50 tentativi poteva anche funzionare bene) ma dal fatto che tale soluzione richiede la modifica della configurazione di default del server SMTP usato.
    Girando il tutto su un sever condiviso (e probabilmente non modificabile) non ottenevo alcun risultato.
    Ho trovato un altro sistema: MDN (mail delivery notification)!
    Questo funziona, ecco il codice (a qualcuno può servire):

    sConfig = "http://schemas.microsoft.com/cdo/configuration/"
    msgUtente.Configuration.Fields.Item(sConfig & "sendusing") = 2
    msgUtente.Configuration.Fields.Item(sConfig & "smtpserver") = strMailServer
    msgUtente.Configuration.Fields.Item(sConfig & "smtpauthenticate") = 1
    msgUtente.Configuration.Fields.Item(sConfig & "sendusername") = strUtente
    msgUtente.Configuration.Fields.Item(sConfig & "sendpassword") = strPassword


    .MDNRequested = True ' True = notifica attiva, False =notifica disattiva
    msgUtente.Fields("urn:schemas:mailheader:dispositi on-notification-to") = strMittente ' mail che riceverà la notifica

    msgUtente.Configuration.Fields.Update
    .Send

    Saluti a tutti.
    PEO from RSM
    www.peogio.net

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    residenza
    San Marino
    Messaggi
    54
    Accidenti, mi sembro Marzullo: si faccia un domanda e si dia una risposta.
    Forse mi servono delle ferie...
    PEO from RSM
    www.peogio.net

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    residenza
    San Marino
    Messaggi
    54
    Sì, mi sa che mi sono Marzullito tanto.

    Il codice postato alle 12:23 funziona ma non fa tutto quello ce mi hanno chiesto.
    Ci sono 3 persone che inviano preventivi con il CDO e un'altra che dovrebbe ricevere e controllare le notifiche di ricezione.
    Quindi devo fare in modo che le notifiche vengano "ritornate" a un indirizzo diverso dai vari mittenti (il controlore deve telefonare a tutti i destinatari di cui non ha traccia di notifica -molti non la rispediscono per scelta-) che è memorizzato in strInviareMDN.

    Per questo motivo ho cambiato il codice delle 12:23 da:
    msgUtente.Fields("urn:schemas:mailheader:dispositi on-notification-to") = strMittente ' era la mail del mittente

    a:
    msgUtente.Fields("urn:schemas:mailheader:dispositi on-notification-to") = strInviareMDN ' mail del controllore di notifiche

    Mi sembrava tutto corretto e invece mi accorgo che le notifiche vengono COMUNQUE rispedite al mittente ignorando l'indirizzo mail "strInviareMDN".
    Sbaglio io qualche cosa oppure non è possibile fare quello che desidero?
    PEO from RSM
    www.peogio.net

  5. #5
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,806
    Ultima modifica di Vincent.Zeno; 28-11-2013 a 21:23

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    residenza
    San Marino
    Messaggi
    54
    Ciao Vincent, il link l'avevo già provato e da me non va, proprio non parte la mail.
    Forse sbaglio io... o potrebbe essere che il server non ne permetta l'utilizzo?
    Comunque alla mia soluzione (vedi post delle 18:05) manca solo di poter "forzare" l'invio della notifica conferma di lettura verso un indirizzo mail diverso da quello mittente.
    Ma come si fa? Tutte le notifiche tornano all'indirizzo del mittente (odiato mittente!)
    Manca poco: un piccolo passo per un programmatore (bravo) un grande passo per il resto dell'umanità.
    PEO from RSM
    www.peogio.net

  7. #7
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,806
    hai provato ad aggiungere urn:schemas:mailheader:return-receipt-to ?


    comunque, mal che vada, puoi sempre dirottare la mail verso un'altra casella identificandole da parole nel oggetto
    Ultima modifica di Vincent.Zeno; 29-11-2013 a 01:36

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    residenza
    San Marino
    Messaggi
    54
    Ho provato ad aggiungere "urn:schemas:mailheader:return-receipt-to" ma non cambia nulla.

    In pratica la riga (se uso solo "notification")...
    msgUtente.Fields("urn:schemas:mailheader:dispositi on-notification-to") = strInviareMDN ' mail del controllore di notifiche

    ...o le righe (se uso sia "notification" che "receipt")...
    msgUtente.Fields("urn:schemas:mailheader:dispositi on-notification-to") = strInviareMDN ' mail del controllore di notifiche
    msgUtente.Fields("urn:schemas:mailheader:return-receipt-to") = = strInviareMDN

    ...vengono ignorate. In effetti ho lo stesso risultato CANCELLANDOLE.
    Quindi o non servono a nulla o sto sbagliando io, magari sbaglio la sintassi su cui non sono proprio un mostro.
    Devo scriverle proprio così?
    PEO from RSM
    www.peogio.net

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.