Script Asp :: Invio di una newsletter agli utenti

Può essere utile poter comunicare rapidamente con tutti gli utenti di un sito del quale si è l'amministratore; in questo caso, è possibile creare la seguente pagina, raggiungibile dal pannello di amministrazione.
Si suppone che il database degli utenti si chiami utenti.mdb, e che la tabella si chiami elenco; i campi nome utente ed e-mail si chiamano rispettivamente "username" ed "email".

<%@ LANGUAGE = JScript %>
<%
Response.Expires=0;
var text = "" + Request.Form("testo"); // "" + equivale circa a new String() ma è più efficace
var title = "" + Request.Form("titolo"); // ...ma non chiedetemi perchè, so che evita problemi

if (text!="undefined") {

text = text.replace(/(\r)/g,"<br>");
// gli "a capo" vengono codificati in html

 // inizializza i link con il database
var ADOConnection = new ActiveXObject("ADODB.Connection");
var sdc = "";
sdc += "driver={Microsoft Access Driver (*.mdb)};";
sdc += "dbq=" + Server.MapPath("/mdb-database/utenti.mdb");
ADOConnection.Open(sdc);

var sql = "SELECT * FROM elenco WHERE NOT username LIKE 'amministratore'";
/* L'amministratore molto probabilmente è inserito nel DB degli utenti; in questo caso
l'e-mail non gli viene inoltrata; gli sarà inviata con un'istruzione successiva.
Sostituire "amministratore" con lo user dell'amministratore.
NOTA: si suppone che l'amministratore si distingua unicamente dallo username. */

var recset = ADOConnection.Execute(sql);

var destinatari = "";

while (!recset.EOF) {
destinatari += recset("email");
destinatari += ", ";
recset.MoveNext();
}
ADOConnection.Close();

destinatari += "indirizzo.del.webmaster@dominio.xx";
// l'ultimo indirizzo ad essere inserito è quello del webmaster, al quale
// arriverà una copia della newsletter da conservare nell'archivio.

var mail = new ActiveXObject("CDONTS.NewMail");

var body = "";
body += "<html>";
body += "<head><title>Newsletter</title></head>";
body += "<body>";
// inserire le varie intestazioni della newsletter
body += "<p align=justify>";
body += text;
body += "</p>";
body += "<p align=center><img src='logo.gif'></p>";
// si inserisce il logo del sito in fondo alla mail (opzionale!)
body += "</body>";
body += "</html>";

mail.MailFormat = 0; // Mail MIME
mail.BodyFormat = 0; // Corpo HTML

mail.AttachURL(Server.MapPath("/images/logo.gif"), "logo.gif");
// il logo del sito (se si vuole inserirlo nella mail) va dichiarato così

mail.To = "";
mail.Bcc = destinatari;
mail.From = "NomeSito";
mail.Subject = "[Newsletter]" + titolo;
// nel soggetto della mail compare il titolo inserito nel form
mail.Body = body;
mail.Send();

%>
<html>
<body>
<p>
<h4>Community</h4>
<b>Invia newsletter</b>
</p>
<%

Response.Write("<p align=\"center\">Newsletter inviata con successo!</p>");

// viene mostrata una copia della newsletter inviata
Response.Write("<p align=\"center\">\n" + body + "\n</p>");

} else {

%>
<html>
<body>
<p>
<h4>Community</h4>
<b>Invia newsletter</b>
</p>
<p align="center">
<table border=0 cellspacing=1 cellpadding=0 bgcolor="#eeddff">
<form method="post" action="<%=Request.ServerVariables("SCRIPT_NAME")%>">
<tr><td bgcolor="#f6f6ff" align=left><b>Titolo:</b></td>
 <td bgcolor="#fffcff"><input type="text" name="titolo"></td></tr>
<tr><td bgcolor="#f6f6ff" colspan=2 align=left><b>Testo:</b></td></tr>
<tr><td bgcolor="#fffcff" colspan=2><textarea name="testo"
 rows=10 cols=70></textarea></td></tr>
<tr><td colspan=2 align=center bgcolor="#f6f6ff">
 <input type="submit" value="Invia"></td></tr>
</form>
</table>
</p>

<% } %>

</body>
</html>