Il componente cdosys fa parte del sistema operativo utilizzato dalle nostre macchine Hosting Windows: e' molto performante e consente un'agevole implementazione.
E' in grado di ricevere informazioni da qualunque tipo di campi modulo e quindi vi consente di creare in piena libertà la vostra pagina contenente i campi modulo da compilare ed inviare tali dati ad un'unica pagina che li elabora.
Di seguito vediamo vari esempi, fra i quali un modulo di base, un modulo in Html, ecc. Nel link sottostante trovate tutti gli esempi descritti (attenzione, seguire la guida) in un unico download.
Il primo esempio mostra un semplice modulo caratterizzato da campi essenziali, vedasi:
Di seguito lo script vero e proprio del modulo basic:
<!--METADATA TYPE="typelib" UUID="CD000000-8B95-11D1-82DB-00C04FB1625D" NAME="CDO for Windows 2000 Type Library" -->
<!--METADATA TYPE="typelib" UUID="00000205-0000-0010-8000-00AA006D2EA4" NAME="ADODB Type Library" -->
<%
DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo
invioA = "miacasella@miodominio.it"
invioDa = "emailmittente@technet.it"
nomeDominio = Request.ServerVariables("HTTP_HOST")
indirizzoIp = Request.ServerVariables("REMOTE_ADDR")
modulo = Request.ServerVariables("HTTP_REFERER")
browserSistemaOperativo = Request.ServerVariables("HTTP_USER_AGENT")
FOR numeroCampi = 1 TO (Request.Form.Count() - 1)
IF NOT Request.Form(numeroCampi) = "" THEN
corpoMessaggio = corpoMessaggio & vbCrLf & Request.Form.Key(numeroCampi) & " = " & Trim(Request.Form(numeroCampi))
END IF
NEXT
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 = Request.Form("email")
.Sender = invioDa
.Subject = "Contatto dal dominio " & nomeDominio
.TextBody = "Questi i dati inseriti nel modulo presente alla pagina " & modulo & " da utente con indirizzo IP " & indirizzoIp & " browser e sistema operativo " & browserSistemaOperativo & vbCrLf & corpoMessaggio & ""
.Send
End With
%>
<script>
document.location.replace('grazie.asp');
</script> |
Osservando il secondo esempio, vediamo come ottenere un FormMail in cdosys più complesso, caratterizzato da campi opzionali, ideale per chi ha esigenze di ricevere dettagliate informazioni riguardo l'utenza:
Il terzo esempio mostra un FormMail in cdosys composto da un campo particolare, che darà facoltà di allegare lato Server una qualunque tipologia di file. Di seguito l'anteprima dell' esempio , lo zip da scaricare e lo script da copiare direttamente dalla pagina e incollarlo nella propria, per chi lo trovasse più comodo. L'invio con allegato dell'esempio che segue e compreso nel file zip richiede unicamente che indichiate il nome del file (da posizionare nella stessa cartella della pagina asp).
A seguire lo script del modulo con allegato:
<!--METADATA TYPE="typelib" UUID="CD000000-8B95-11D1-82DB-00C04FB1625D" NAME="CDO for Windows 2000 Type Library" -->
<!--METADATA TYPE="typelib" UUID="00000205-0000-0010-8000-00AA006D2EA4" NAME="ADODB Type Library" -->
<%
DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo, cartella, fileAllegato
invioA = "miacasella@miodominio.it"
invioDa = "mailmittente@technet.it"
fileAllegato = "ArubaShortcut.zip"
nomeDominio = Request.ServerVariables("HTTP_HOST")
indirizzoIp = Request.ServerVariables("REMOTE_ADDR")
modulo = Request.ServerVariables("HTTP_REFERER")
browserSistemaOperativo = Request.ServerVariables("HTTP_USER_AGENT")
cartella = Server.MapPath("./")
FOR numeroCampi = 1 TO (Request.Form.Count() - 1)
IF NOT Request.Form(numeroCampi) = "" THEN
corpoMessaggio = corpoMessaggio & vbCrLf & Request.Form.Key(numeroCampi) & " = " & Trim(Request.Form(numeroCampi))
END IF
NEXT
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 = Request.Form("email")
.Sender = invioDa
.Subject = "Contatto dal dominio " & nomeDominio
.TextBody = "Questi i dati inseriti nel modulo presente alla pagina " & modulo & " da utente con indirizzo IP " & indirizzoIp & " browser e sistema operativo " & browserSistemaOperativo & vbCrLf & corpoMessaggio & ""
.AddAttachment (cartella & "\" & fileAllegato)
.Send
End With
%>
<script>
document.location.replace('grazie.asp');
</script> |
Il quarto esempio mostra il modello di un FormMail in formato Html. E' immediato percepire come l'utilizzo del seguente modulo richieda meno fatica dei precedenti.
Per l'invio dei dati è solo necessario sostituire la riga di testo che segue:
.textBody="miotesto"
con
.HTMLBody = "<b>Questi i dati inseriti nel modulo presente alla pagina </b>"
In cdosys l'invio dei dati è piuttosto immediato, supponendo quindi di voler inviare alla vostra utenza una pagina dedita a semplici ringraziamenti, come questo esempio, sarà necessario assicurarsi che nella pagina non vi siano javascript particolari che potrebbero dare errore nel client di posta, e inviarla quindi senza alcuna complessa modifica al codice.
Di seguito il codice del modulo in html, alquanto intuitivo da modificare e comprendere:
<%@ Language=VBScript %>
<%
Dim iMsg
Dim iConf
Dim Flds
set iMsg = CreateObject("CDO.Message")
set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
Flds("http://schemas.microsoft.com/cdo/configuration/urlgetlatestversion") = True
Flds.Update
With iMsg
Set .Configuration = iConf
.CreateMHTMLBody "http://vademecum.aruba.it/main/sicurezza_via_mail.htm"
.To = ""miacasella@miodominio.it"
.From = "mailmittente@technet.it"
.Subject = "test messaggio html via cdosys, uso template"
.Send
End With
%>
<title>cdosys invio pagina html template</title>
pagina html inviata |
Il quinto esempio ed ultimo realizzabile in cdosys, mostra la possibillità di creare un semplice modulo contenente un solo campo di testo, utile unicamente per l'inserimento dell'email, inviando in automatico una pagina di ringraziamenti predefinita, la stessa vista nell'esempio precedente.
Creare quindi una pagina vuota, garantendosi che contenga un unico form con un campo email, ed all'interno della pagina sostituire il seguente codice:
To = "miaemaile@aruba.it"
con
.To = Request.Form("email") |

E' di notevole importanza sapere che volendo utilizzare
l'smtp del vostro dominio, avendo già registrato il servizio
Antivirus+Antispam è necessaria l'autenticazione
smtp. Sarete tenuti quindi, a sostituire nella pagina inateressata, ad esempio
formcdosys.asp, la parte del codice che non usa autenticazione, con lo script in grassetto sottostante, che la presente guida mostra:
Flds(cdoSendUsingMethod) = cdoSendUsingPort
Flds(cdoSMTPServer) = "smtp.aruba.it"
Flds(cdoSMTPServerPort) = 25
Flds(cdoSMTPAuthenticate) = cdoAnonymous ' 0
Flds.Update
con questo che usa autenticazione
Flds(cdoSendUsingMethod) = cdoSendUsingPort
Flds(cdoSMTPServer) = "smtp.miodominio.ext"
Flds(cdoSMTPServerPort) = 25
Flds(cdoSMTPAuthenticate) = cdoBasic
Flds(cdoSendUserName) = "postmaster@miodominio.ext"
Flds(cdoSendPassword) = "miaPassword"
Flds.Update |

Gli esempi di
cdosys fino ad ora mostrati sono redatti in
VBScript: e' anche possibile usare
Javascript, per coloro che abitualmente utilizzino tale piattaforma.
Esempio di CDOSYS in Jscript
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
< %
var iMsg = Server.CreateObject("CDO.Message")
var iBodyPart = iMsg.BodyPart;
iBodyPart.ContentTransferEncoding = "8bit";var iConf = Server.CreateObject("CDO.Configuration")
iConf.Fields("cdoSMTPServerName") = "smtp.aruba.it"
iMsg.Configuration = iConf
var msg = "Prova invio jscript" ;
iMsg.To = "miaemail@aruba.it";
iMsg.From = "altramail@aruba.it";
iMsg.Subject = "CDO Test jscript";
iMsg.TextBody = msg;
iMsg.send()
%> |
N.B. Le applicazioni più comuni si servono di cdosys, come componente di invio dati. Cdonts non è più utilizzato e neanche più presente all'interno di librerie come activeX fornite da Microsoft ® con i sistemi operativi. Gli autori quindi di applicazioni, forum, portali disponibili in rete si sono adeguati.
Detto questo, ecco di seguito un esempio comparativo della vecchia sintassi Cdonts con l'equivalente Cdosys per Windows2000 o superiore, da adottare per eseguire modifiche a script preesistenti:
Vecchio CDONTS
 |
<%
Dim MiaMail
Set MiaMail = Server.CreateObject("CDONTS.NewMail")
MiaMail.From = "mioindirizzo@aruba.it"
MiaMail.To = "miamail@aruba.it"
'MiaMail.Cc = "altroindirizzo@aruba.it;ancora@aruba.it"
'MiaMail.Bcc = "altroindirizzo@aruba.it;ancora@aruba.it"
MiaMail.Subject = "invio tramite CDONTS NewMail"
MiaMail.BodyFormat = 1
MiaMail.MailFormat = 0
MiaMail.Importance = 2
MiaMail.Body = "invia email tramite CDONTS NewMail" &_
"oggetto dismesso da Microsoft"
'MiaMail.Attachfile "d:\inetpub\webs\miodominio\file.gif", 1
MiaMail.Send
Set MiaMail = Nothing
%> |
CDOSYS
 |
<%
Dim MiaMail
Set MiaMail = Server.CreateObject("CDO.Message")
MiaMail.From = "mioindirizzo@aruba.it"
MiaMail.To = "miamail@aruba.it"
'MiaMail.Cc = "altroindirizzo@aruba.it;ancora@aruba.it"
'MiaMail.Bcc = "altroindirizzo@aruba.it;ancora@aruba.it"
MiaMail.Subject = "Invio tramite cdosys"
MiaMail.TextBody = "Invia tramite CDOSYS " &_
"paragone con cdonts "
'MiaMail.AddAttachment "d:\inetpub\webs\tuodominiocom\file.zip"
MiaMail.Fields("urn:schemas:httpmail:importance").Value = 2
MiaMail.Fields.Update()
MiaMail.Send()
Set MiaMail = Nothing
%> |
|