Ciao a tutti!
Nel mio sito gli utenti possono iscriversi alla newsletter compilando un semplice form. Una volta spediti i dati, viene inviata un'e-mail (cdosys) con il riepilogo dei dati. Questi nel frattempo vengono salvati su db (fin qui funziona tutto).
Nell'e-mail inserisco due link che consentono all'utente di confermare o annullare l'iscrizione. Qui sorgono dei problemi, penso di facile soluzione, ma al momento sono poco lucido e non ci arrivo da solo.
Questo l'errore se annulla l'iscrizione:
codice:
Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression 'mail =mail_utente@hotmail.com'.
/mod-newsletter.asp, line 26
Questo l'errore se conferma l'iscrizione:
codice:
Microsoft JET Database Engine error '80040e14'
Missing semicolon (;) at end of SQL statement.
/mod-newsletter.asp, line 20
Altro problema: i link dell'e-mail inviata con cdosys non sono cliccabili (almeno legegndo il messaggio dalla pagina di hotmail).
Infine, ecco il codice della pagina che conferma/annulla:
Codice PHP:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento senza titolo</title>
</head>
<body>
<%
dim mail, conferma, annulla, sqlNewsletter
mail = request("mail")
conferma = request("conferma")
annulla = request("annulla")
if conferma <> "" then
sqlNewsletter = "INSERT INTO iscritti (conferma) values ('"&conferma&"') where mail =" & mail
objConn.execute (sqlNewsletter)
response.Redirect ("conferma.html")
end if
if annulla <> "" then
sqlNewsletter = "DELETE * FROM iscritti where mail =" & mail
objConn.execute (sqlNewsletter)
response.Redirect ("annulla.html")
end if
%>
</body>
</html>
<%
objConn.close
set objConn = nothing
%>
Questa è invece la pagina che riceve i dati del form e invia l'e-mail:
Codice PHP:
<%
'recupero dati
dim nome, cognome, anno, sezione, mail, sqlNewsletter, conferma, annulla
nome = request("nome")
cognome = request("cognome")
anno = request("anno")
sezione = request("sezione")
mail = request("mail")
conferma= "www.nomesito.com/mod-newsletter.asp?conferma=ok&mail=" & mail
annulla = "www.nomesito.com/mod-newsletter.asp?annulla=ok&mail=" & mail
sqlNewsletter = "INSERT INTO iscritti (nome,cognome,anno,sezione,mail) values ('"&nome&"','"&cognome&"','"&anno&"','"&sezione&"','"&mail&"')"
objConn.execute (sqlNewsletter)
'********* SCRIPT CDOSYS ******************************************************
If Request.ServerVariables("server_software") <> "Microsoft-IIS/5.1" Then
Oggetto = "Iscrizione newsletter nomesito.com"
IMG = "http://www.nomesito.com/images/logo.jpg"
Dim eMail
Set eMail = CreateObject("CDO.Message")
'Definiamo i diversi attributi della nostra mail
eMail.From = "info@nomesito.com"
eMail.To = mail
eMail.Bcc = "webmaster@hotmail.com"
eMail.Subject = Oggetto
eMail.HTMLBody = "<html><body>[img] & IMG & [/img]
"
eMail.HTMLBody = eMail.HTMLBody & "
"
eMail.HTMLBody = eMail.HTMLBody & "Richiesta di iscrizione alla newsletter da parte di [b]" & nome & " " & cognome & "[/b]
"
eMail.HTMLBody = eMail.HTMLBody & "[b]<u>Dati del richiedente</u>[/b]:
"
eMail.HTMLBody = eMail.HTMLBody & "
[b]Anno di maturità[/b]: " & anno
eMail.HTMLBody = eMail.HTMLBody & "
[b]Sezione[/b]: " & sezione
eMail.HTMLBody = eMail.HTMLBody & "
[b]E-mail[/b]: " & mail & "
"
eMail.HTMLBody = eMail.HTMLBody & "Per confermare l'iscrizione clicca sul link:
"
eMail.HTMLBody = eMail.HTMLBody & conferma & "
"
eMail.HTMLBody = eMail.HTMLBody & "Conserva questo messaggio. In qualunque momento puoi annullare l'iscrizione alla newsletter
"
eMail.HTMLBody = eMail.HTMLBody & "cliccando sul seguente link:
"
eMail.HTMLBody = eMail.HTMLBody & annulla
'Stabiliamo il livello di importanza (1 o 2)
eMail.Fields("urn:schemas:httpmail:importance").Value = 1
eMail.Fields.Update()
'Inviamo la mail!
eMail.Send()
Set eMail = Nothing
ELSE
RESPONSE.Write("SU IIS NON POSSO INVIARE LA MAIL DI CONFERMA
")
END IF
response.Write(login)
'***** FINE SCRIPT CDOSYS *****************************************************
response.Redirect ("index.html")
%>
</body>
</html>
<%
objConn.close
set objConn = nothing
%>
Grazie in anticipo all'anima pia che di domenica mi risponderà..