Spedire e-mail da una pagina ASP con CDONTS

di Luca Milan, in ASP - Scripting,

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

Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata