CDO è l'acronimo di Collaboration Data Objects, una libreria COM disegnata per spedire e-mail attraverso il protocollo SMTP (Simple Mail Transfer Protocol) o Microsoft Exchange.
Installando IIS 4.0 ed il protocollo SMTP, siamo abilitati a spedire e-mail via ASP utilizzando le specifiche di CDO, che oltre ad essere molto semplice da utilizzare è gratuito perchè incluso nel MS Option Pack.
Con poche linee di codice siamo già pronti a spedire la nostra prima mail:
<% Set objMail = Server.CreateObject("CDONTS.NewMail") objMail.Send "Luca@dominio.it", "aspitalia@dominio.it", "Prove Posta", "La mia prima mail con CDONTS", 0 Set objMail = nothing %>
La cosa che subito balza all'occhio è la creazione, nella prima linea di codice, di un oggetto NewMail (chiamato objMail ).
Nella seconda linea viene chiamato il metodo ObjMail.Send necessario a spedire la nostra e-mail, al quale passiamo sotto forma di parametri il FROM, il TO, il SUBJECT e il BODY di una normale e-mail, separati da virgole.
Una volta chiamto il metodo objMail.Send , l'oggetto NewMail diventa inutilizzabile per spedire altre mail, quindi diventa necessaro chiudere objMail settandolo uguale a Nothing .
Esistono due modi per inviare e-mail con CDO, il primo come abbbiamo visto implica l'utilizzo del metodo objMail.Send con il passaggio contemporaneo dei parametri. Il secondo, molto più efficace, separa i parametri tra loro, permettendo di essere impostati individualmente, mentre il metodo objMail.Send viene invocato solo alla fine per inviare l'e-mail:
<% Set objMail = Server.CreateObject("CDONTS.NewMail") objMail.From=" <b>DA</b> _Luca@dominio.it" objMail.To=" <b>A</b> _ASPItalia@dominio.it" objMail.Subject="Prove Posta" objMail.Body="La mia prima mail con CDO" objMail.importance=0 objMail.Send Set objMail = nothing %>
Attachment di un file
Una delle cose più utili che possiamo fare con l'invio di una e-mail è allegare un file, con CDO è possibile fare questo attraverso il metodo objMail.attachFile , dopo aver istanziato un oggetto NewMail , oltre al percorso del file che si vuole allegare è possibile rinominare il file che stiamo inviando.
<% Set objMail = Server.CreateObject("CDONTS.NewMail") <b>objMail.attachFile("\\mio_computer\testo\file.txt","test.txt") </b> objMail.Send " <b>DA</b> _Luca@dominio.it"," <b>A</b> _ASPItalia@dominio.it","Prove Posta", "La mia prima mail con CDO",0 Set objMail = nothing %>
Inviare Mail da una form
Le applicazioni professionali nell'utilizzo di form di contatto, registrazione o informazione prodotti, una delle cose che più si apprezzano è l'invio automatico di un'e-mail di risposta oppure l'invo al server dei dati stessi contenuti nella form. Come si può vedere dall'esempio sottostante tutto ciò si può realizzare con semplicità attraverso l'utilizzo di CDO.
<html> <body> <% If request("Button")="Invia" then Set objMail = Server.CreateObject("CDONTS.NewMail") objMail.From=request("Address") CorpoMessaggio="Grazie" & request("Nome") & request("Cognome") & "per aver letto il mio articolo" objMail.Body=CorpoMessaggio objMail.To="A_ASPItalia@dominio.it" objMail.Subject="Risultati da una Form di Prova" objMail.Send set objMail = nothing response.write "E-mail Inviata" else %> <form action="FormMail.asp" method="POST" name="CDOEMAIL"> Nome: <input type="text" size="20" name="Nome"> Cognome:<input type="text" size="20" name="Cognome"> E-mail: <input type="text" size="20" name="Address"> <input type="submit" name="Button" value="Invia"> </form> <% End if %> </body> </html>
Spedire e-mail tramite una lista da database
Pensiamo alle mailing list, sempre più spesso nelle applicazioni professionali si ha l'esigenza di spedire e-mail ad una lista di soggetti anche molto numerosa, per informarli su aggiornamenti o sull'uscita di nuovi prodotti.
Nella maggior parte dei casi gli indirizzi di posta elettronica dei clienti sono stipati in database, che possono essere interrogati per estrapolare le informazioni che ci interessano, nel nostro caso gli EmailAddress.
<% Set Conn = Server.CreateObject("ADODB.Connection") RSConnect = "dsn=MailingListDB" Conn.Open RSConnect Set rsEmails=Conn.Execute("Select EmailAddress From Clienti") Do While not rsEmails.eof Set objMail = Server.CreateObject("CDONTS.NewMail") objMail.From="webmaster@aspitalia.com" objMail.To= <b>rsEmails("EmailAddress") </b> 'Indirizzo estratto dal database objMail.Subject="Prova e-mail" objMail.Body="Questa è una prova di spedizione e-mail via CDO" objMail.importance=0 objMail.Send Set objMail = nothing rsEmails.movenext loop set rsEmails = nothing Conn.close Set Conn = nothing %>
L'esempio qui sopra riportato è di facile intuizione e ci offre spunti interessanti per sviluppare applicazioni molto potenti basate sulla spedizione di e-mail.
Inviare testo HTML via e-mail
Una delle possibilità più allettanti che potremmo offrire al nostro sito web è l'invio di pagine HTML via e-mail. Pensate di inviare un report dettagliato in HTML al vostro cliente subito dopo l'acquisto online sul vostro sito, questo e quant'altro può prendere spunto dall'esempio riportato qui sotto:
<% Dim objMail Set objMail = CreateObject("CDONTS.NewMail") objMail.AttachURL "c:\immagini\logo.gif", "logo.gif" ' possiamo aggiungerne altre HTML = "<!DOCTYPE HTML PUBLIC ""-//IETF//DTD HTML//IT"">" & NL HTML = HTML & "<html>" HTML = HTML & "<head>" HTML = HTML & "<meta http-equiv=""Content-Type""" HTML = HTML & "content=""text/html; charset=iso-8859-1"">" HTML = HTML & "<title>Prove di Spedizione HTML</title>" HTML = HTML & "</head>" HTML = HTML & "<body #FFFFFF"">" HTML = HTML & "<font Arial""><strong>" HTML = HTML & "<img src=logo.gif> " HTML = HTML & "<a href=http://www.ASPItalia.com>" HTML = HTML & "Il sito Italiano sulle Active Server Pages</a>" HTML = HTML & "</strong></font>" HTML = HTML & "ASPItalia.com: Enjoy the .NET community!" HTML = HTML & "</body>" HTML = HTML & "</html>" objMail.From = "Luca@dominio.it" objMail.To = "aspitalia@dominio.it" objMail.Subject = "Novità su ASPItalia.com" objMail.BodyFormat = 0 objMail.MailFormat = 0 objMail.Body = HTML objMail.Send %>
L'utilizzo di testo in format HTML è supportato grazie al settaggio dei due metodi:
objMail.BodyFormat = 0 ' se = a 1 formato testo objMail.MailFormat = 0 ' se = a 1 formato testo
Se fossero settati uguali a 1 avremmo predisposto CDO all'invio di un messaggio in "plain text", testo.
Dobbiamo ricordare che non tutti i client di posta elettronica sono abilitati a ricevere messaggi HTM via e-mail, ma tra quelli abilitati troviamo Microsoft Outlook 9x/Express e Netscape Messenger, i più diffusi in ambito domestico.
Dai pochi esempi riportati non è difficile capire le potenzialità che potrebbe acquistare il nostro sito web grazie all'utilizzo di CDO e database, soprattutto nella gestione di Mailing List e dei rapporti via e-mail con la clientela consolidata (info su prodotti, patch, aggiornamenti e quant'altro).
Approfondimenti
- Configurare il servizio SMTP di Windows 2000
- Inviare un'e-mail con allegati
- Realizzare una mailing-list con ASP 1/2
- Aggiungere il nome del mittente ad una e-mail generata con CDONTS
- Formattare un'e-mail
- Costruire un semplice form to mail
- Un'alternativa a CDONTS per spedire e-mail: ASPEmail
- Inviare e-mail utilizzando IISMail
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.