Ricerca
Ricerca Avanzata
Vai a:
ArubaScreen
lo screensaver di Aruba:
supporta anche i multi-monitor!

Cdosys, formMail in asp per Hosting Windows Aruba.it

  
versión española

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" -->
<%
'============Linkbruttocane su specifiche MSDN================
'* il corpo finale del messaggio contiene tutti i campi *
'* inseriti nella pagina html, in pratica puoi mettere *
'* tutti i campi che ti servono nel modulo di invio senza *
'* fare altre configurazioni aggiuntive. *
'=============================================================

DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo

'* voce da modificare con il proprio indirizzo email

invioA = "miacasella@miodominio.it"

'* voce da modificare con un indirizzo email che funga da mittente:
'* in caso di errore riceverete notifica a questo indirizzo un MAILER-DAEMON
'* dato che cdosys supporta questa notifica

invioDa = "emailmittente@technet.it"

'------------fine modifiche necessarie------------------

nomeDominio = Request.ServerVariables("HTTP_HOST")
indirizzoIp = Request.ServerVariables("REMOTE_ADDR")
modulo = Request.ServerVariables("HTTP_REFERER")
browserSistemaOperativo = Request.ServerVariables("HTTP_USER_AGENT")

'*rilevo i campi del form

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

'* creo gli oggetti cdosys sul server e li gestisco

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" -->
<%
'============ Linkbruttocane su specifiche MSDN ================
'* il corpo finale del messaggio contiene tutti i campi *
'* inseriti nella pagina html, in pratica puoi mettere *
'* tutti i campi che ti servono nel modulo di invio senza *
'* fare altre configurazioni aggiuntive. *
'===============================================================


DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo, cartella, fileAllegato

'* voce da modificare con il proprio indirizzo email

invioA = "miacasella@miodominio.it"

'* voce da modificare con un indirizzo email che funga da mittente:
'* in caso di errore riceverete notifica a questo indirizzo un MAILER-DAEMON
'* dato che cdosys supporta questa notifica

invioDa = "mailmittente@technet.it"

'* indicare il nome del file da allegare, il file deve
'* risiedere in questa stessa cartella, come il file allegato a titolo di esempio

fileAllegato = "ArubaShortcut.zip"

'------------fine modifiche necessarie------------------

nomeDominio = Request.ServerVariables("HTTP_HOST")
indirizzoIp = Request.ServerVariables("REMOTE_ADDR")
modulo = Request.ServerVariables("HTTP_REFERER")
browserSistemaOperativo = Request.ServerVariables("HTTP_USER_AGENT")
cartella = Server.MapPath("./")

'*rilevo i campi del form


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

'* creo gli oggetti cdosys sul server e li gestisco


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 %>

<%
'============ Linkbruttocane su specifiche MSDN ================
'* assicurarsi di non inserire javascript che potrebbero dare errori nel client
'* di posta dei vostri utenti
'=====qui non modificare================

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

'*===== modifica CreateMHTMLBody From To e subject
'cambiare la pagina dopo aver provato a riceverla, vedasi codice utilizzabile nella pagina stessa
'per essere sicuri di non inviare codice non leggibile dal client di posta

.CreateMHTMLBody "http://vademecum.aruba.it/main/sicurezza_via_mail.htm"

'mettere la propria mail e separare eventuali destinatari con virgola
.To = ""miacasella@miodominio.it"

'mettere una mail valida come mittente
.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
%>