Il codice in sé non era sbagliato, ma mancava l'assegnazione del testo del corpo del messaggio (objMail.TextBody), e il successivo invio del messaggio (objMail.Send).
Response.Flush/End termina la sessione e quindi la mail non viene mai inviata.
Inoltre, per motivi di sintassi, c'è da evitare ... vbCrLf& ... e scrivere invece ... vbCrLf & ... (nota lo spazio). vbCrLf& potrebbe essere interpretato come variabile del tipo Long.
Per alcuni sistemi, potrebbe essere necessario usare l'oggetto di configurazione. Allego l'esempio di aruba, che mostra come usare CDOSYS.
Codice:
<!--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 = "[email protected]"
'* 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 = "[email protected]"
'------------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>
</script>
Chi ha bisogno di allegare file al messaggio, può usare lo script seguente:
Codice:
<!--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 = "[email protected]"
'* 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 = "[email protected]"
'* 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>
</script>
Segnalibri