Klockan :
 ASP, Epost - Skicka E-post med ASP! 2001-07-01 00:08:47 
 Information om författaren :
Namn : Jimmy Staff
Epost : admin@aspwebb.com
Hemsida : http://www.aspwebb.com
Presentation :
Ansvarig på ASPWebb!
 Meny :
Startsidan (www.aspwebb.com)
Artikelarkivet
Föregående sida
Utskriftsvänlig sida
Kommentera artikel

ASP, Epost - Skicka E-post med ASP!

Att skicka e-post med ASP (Avancerad)!

I denna artikel ska vi lära oss hur man skickar e-post via en ASP sida, jag förutsätter att du redan har goda kunskaper i ASP(VBScript) och att du använder IIS (internet information services/server) 4 eller senare med SMTP-tjänsten installerad och konfigurerad. PWS (Personal Webb Server) stödjer ej denna funktion.

 

Vad är samarbetsobjekt(CDO)?

Sammarbetsobjekt är den senaste versionen av Microsofts objektbibliotek, som avser att ge utvecklaren ett lätt sätt att tillhandahålla enkla meddelandehanteringstjänster, samt låter oss utnyttja möjligheterna i Microsoft Exchange Server.

 

Varför ska man använda CDO?

Eftersom det går att komma åt CDO från VBScript och Jscript kan man använda det på ASP-sidor för att webbtillämpningar som är aktiverade för e-post och meddelande hantering.  Man kan använda CDO för att skapa en webbplats där användaren kan ansluta till sin e-postlåda från vilken dator som helst vart som helst i världen och det utan att behöva installera en enda programvara på datorn.

 

Andra funktioner som CDO objektet kan användas till är t ex:

  • Skicka e-post för att bekräfta när en användare har beställt något.
  • Skicka administrativ e-post till den webbansvarige när en viss åtgärd misslyckas.
  • Bearbeta en lista över e-postmottagare och skicka ett meddelande till var och en på listan.

 

Möjligheterna är oändliga.

 

Vad är CDO för NTS?

I många fall kanske inte utvecklaren vill använda kalender-, samarbets- och arbetsflödesfunktionerna i Exchange Server och CDO, utan han eller hon är bara intresserad av sändning och mottagning av enkla e-postmeddelanden. Det är sådana utvecklare som utgör målgruppen för Samarbetsdataobjekt för windows NT Server (CDONTS).

CDONTS tillhandahåller en del av funktionerna i CDO. Det avser att ge tillförlitlig, snabb och enkel meddelandehantering för tillämpningar som inte behöver använda de mer avancerade kalender- och arbetsflödesfunktionerna i Exchange Server och CDO.

CDONTS installeras som en del av SMTP-tjänsten, som ingår som en valfri komponent i Windows 2000, vid installation av IIS.

I denna artikel ska vi endast beröra CDONTS och dess NewMail funktion.

 

Som ett exempel på enkelheten i CDONTS kan vi ta den kod som krävs för att skicka ett e-postmeddelande med hjälp av objektet NewMail. Det behövs endast 2 kodrader för att åstadkomma detta :

 

 Set SendMail = CreateObject("CDONTS.NewMail")

 SendMail.Send "Jimmy@rymden.com", "Frida@jorden.com", "Ämnet", "Meddelandet"

 

Utan att vi har gått igenom CDONTS så visar detta exempel hur enkelt det är att använda SendMail.

 

Referera till typbibliotek

När du programmerar med CDONTS kanske du tycker att det är smidigt att använda konstanter (till exempel CdoBodyFormatHTML) istället för det värde som de associeras till (0 för CdoBodyFormatHTML). Detta för att öka läsligheten och förståligheten på din programmering.

För att lägga till en referens till ett typbibilotek kan man redigera filen global.asa (har du ingen global.asa så skapa en i roten för din webbplats) :

 

 <!--METADATA TYPE="TypeLib" NAME="Microsoft CDO for NTS 1.2 Library"

    UUID="{0E064ADD-9D99-11D0-ABE5-00AA0064D470}" VERSION="1.2"-->

 

 

När du väl har lagt till den här META-taggen till global.asa kan du använda CDONTS-konstanterna på alla dina ASP-sidor. På så sätt behöver du ej komma ihåg specifika värden. Istället för att till exempel behöva känna till att CdoHigh uttrycks som 2 kan du alltså använda konstanten CdoHigh i

ASP-koden.

 

Du kan också lägga till det överst på sidan ska skicka ett meddelande om du ej vill använda dig av global.asa.

 

Ett annat tips är att infoga <% Option Explicit %> överst i alla ASP-filer. Det gör att du får ett felmeddelande om du försöker använda konstanterna utan att ha en fungerande referens till typbiblioteket (du blir även tvungen att deklarera alla variabler som du använder dig av).

Option Explicit hjälper dig att spåra fel i ASP-koden som annars kan vara mycket svåra att hitta.

 

Objektet NewMail

Objektet NewMail låter dig lätt och snabbt lägga till enkla funktioner för sändning av

e-postmeddelanden till en webbsida. Som vi visade tidigare kommer följande kodrader att skapa och skicka ett meddelande :

 

 Set SendMail = CreateObject("CDONTS.NewMail")

 SendMail.Send "Jimmy@rymden.com", "Frida@jorden.com", "En hälsning", _
 "Välkommen till Tellus"

 Set SendMail = Nothing

 

Nu ska vi titta på vad som egentligen händer I den här koden.

 

När koden körs upprättas en anslutning till SMTP-tjänsten, och ett SMTP-meddelande skickas till Frida@jorden.com med ämnet En hälsning och textinnehållet Välkommen till Rymden när mottagaren får meddelandet så kommer avsändaren att vara Jimmy@rymden.com.

 

När man ska skicka ett nytt meddelande är första steget att skapa en instans av NewMail-Objektet. Detta görs i den första kodraden. Den andra raden skickar meddelandet med hjälp av parametrarna i Send-metoden. Vi kommer att gå närmare in på den här metoden senare i denna artikel. Just nu nöjer vi oss med att visa syntaxen :

 

  ObjNewMail.Send( [From] [, To] [, Subject] [, Body] [, Importance] )

 

Den sista kodraden I exemplet släpper NewMail-objektet och frigör dess resurser.

 

Huvudparten av åtgärderna i det här exemplet sker i den andra kodraden; all viktig information om meddelandet anges i parametrarna till Send-metoden. Alternativt kan man specificera varje egenskapsvärde för NewMail-objektet på det här sättet :

 

       Set SendMail = CreateObject("CDONTS.NewMail")

       With SendMail

            .From = "Jimmy@rymden.com"

            .To = "Frida@jorden.com"

            .Subject = "En hälsning"

            .Body = "Välkommen till Rymden"

            .Send

       End With

       Set SendMail = Nothing

 

Eller på detta viset :

 

      Set SendMail = CreateObject("CDONTS.NewMail")

       SendMail.From = "Jimmy@rymden.com"

       SendMail.To = "Frida@jorden.com"

       SendMail.Subject = "En hälsning"

       SendMail.Body = "Välkommen till Rymden"

       SendMail.Send

       Set SendMail = Nothing

 

Dessa 9 kodrader skapar samma meddelande som de tidigare tre – funktionsmässigt är koderna helt identiska. Skillnaden är att den längre koden är mer lättläst, och som läsare behöver man känna till Send-metodens syntax. Den här koden kan vara användbar när egenskaperna har flera värden eller är omfattande i fråga om storlek och/eller längd. Dessutom kan det vara lättare att felsöka den här koden. Om du endast vill skicka ett enkelt meddelande är Send-metoden med parametrar ett bättre val.

 

NewMail-objektet kräver inte att man anger någon avsändare av meddelandet och detta medger både anonyma e-postmeddelanden och e-postmeddelanden med falska avsändare. Det är upp till utvecklaren att ange vem som är avsändaren.

 

Egenskaperna TO, CC och BCC

NewMail-objektet låter oss ange TO- CC- och BCC-mottagare för meddelandet. Exempel :

 

       SendMail.To = "Frida@jorden.com"

       SendMail.CC = "Anders@jorden.com"

       SendMail.BCC = "Lina@jorden.com"

 

Med de här egenskaperna skulle meddelandet att skickas till Frida@jorden.com, Anders@jorden.com skulle få en kopia och Lina@jorden.com skulle få en hemlig kopia (blind copy).

 

Eventuella mottagare i BCC-raden visas inte för de andra mottagarna, det vill säga de mottagare
som står på To- och CC-listan kommer inte att veta att det skickades en kopia till BCC-mottagaren. Om det finns flera BCC-mottagare kommer dessa inte att se varandra.

 

Det går att ange flera adresser för egenskaperna TO, CC och BCC. För att skicka ett meddelande till flera mottagare avgränsar du helt enkelt adresserna med ett semikolon:

 

       SendMail.To = "Frida@jorden.com;Anders@jorden.com;Lina@jorden.com"

 

Ett meddelande kan endast ha en avsändare, From-egenskapen kan därför aldrig innehålla mer än en adress.

 

Egenskapen Importance

NewMail-objektet har en Importance-egenskap, som låter dig ange prioritet/ängelägenhet för e-postmeddelandet. Det finns tre olika piroritetsvärden, och var och en av dessa motsvarar en konstant i biblioteket CDONTS.DLL (typbiblioteket som vi importerade i global.asa):

 

·         Hög – CdoHigh eller 2

·         Normal – CdoNormal eller 1

·         Låg – CdoLow eller 0

 

Standardvärdet är Normal. För att ge ett meddelande värdet hög eller låg anger du helt enkelt Importance-egenskapen som CdoHigh eller CdoLow, på det här sättet:

 

    SendMail.Send "Jimmy@rymden.com", "Frida@jorden.com", "En hälsning", _
                                  "Välkommen till Tellus", CdoHigh

 

Eller så här :

 

       SendMail.Importance = CdoHigh

      

 

 

 

Textdelen i e-postmeddelandet

Body-egenskapen låter dig specificera textinnehållet i meddelandet, som antingen som ren text eller som HTML.

För enkel ren text skulle du skriva så här :

      

       SendMail.Body = "Välkommen till Rymden"

 

Som standard formateras alla meddelanden som ren text.

 

Alternativt kan du skicka ett meddelande som är HTML-formaterad. För att kunna göra detta måste du förändra NewMail-objektets BodyFormat-egenskap till CdoBodyFormatHTML. Sedan kan du ange Body-egenskap som en html-formaterad sträng. Så här skulle koden se ut :

 

       Dim vMeddelandet, SendMail

      

       vMeddelandet = "<HTML>"

       vMeddelandet = vMeddelandet & "<HEAD>"

       vMeddelandet = vMeddelandet & "<TITLE>En hälsning</TITLE>"

       vMeddelandet = vMeddelandet & "</HEAD>"

       vMeddelandet = vMeddelandet & "<BODY>"

       vMeddelandet = vMeddelandet & "<P>Välkommen till <B>Rymden</B> !</P>"

       vMeddelandet = vMeddelandet & "</BODY>"

       vMeddelandet = vMeddelandet & "</HTML>"

 

       Set SendMail = CreateObject("CDONTS.NewMail")

      

       With SendMail

            .From = "Jimmy@rymden.com"

            .To = "Frida@jorden.com"

            .BodyFormat = CdoBodyFormatHTML ' eller 0

            .MailFormat = CdoMailFormatMIME ' eller 0

            .Body = vMeddelandet

            .Send

       End With

 

       Set SendMail = Nothing

 

Om du ska inkludera många länkar och bilder så kan du använda dig av egenskaperna ContentLocation och ContentBase. Dessa egenskaper gör det enklare för dig att hänvisa till filer på servern.

 

·         Egenskapen ContentLocation låter dig ange antingen den absoluta eller den relativa sökvägen till alla URL:er inom meddelandet.

·         Egenskapen ContentBase låter dig ange bassökvägen till alla URL:er inom meddelandets textdel.

 

När ContentLocation inte är tom (inte lika med "") tolkas alla URL:er i meddelandets textdel som relativa sökvägar – relativt till den sökväg som angavs i ContentLocation. När även ContentBase inte ar tom tolkas ContentLocation-sökvägensom relativ till den sökväg som angavs i ContentBase.

 

Det här kan låta lite förvirrande, så vi tar ett konkret kodexempel för att förtydliga:

 

       Dim vMeddelandet, SendMail

      

       vMeddelandet = "<HTML>"

       vMeddelandet = vMeddelandet & "<HEAD>"

       vMeddelandet = vMeddelandet & "<TITLE>En hälsning</TITLE>"

       vMeddelandet = vMeddelandet & "</HEAD>"

       vMeddelandet = vMeddelandet & "<BODY>"

       vMeddelandet = vMeddelandet & "<P>Välkommen till <B>Rymden</B> !</P><BR>"

       vMeddelandet = vMeddelandet & "<IMG src='tellus.gif'>

       vMeddelandet = vMeddelandet & "</BODY>"

       vMeddelandet = vMeddelandet & "</HTML>"

 

       Set SendMail = CreateObject("CDONTS.NewMail")

      

       With SendMail

            .From = "Jimmy@rymden.com"

            .To = "Frida@jorden.com"

            .BodyFormat = CdoBodyFormatHTML ' eller 0

            .MailFormat = CdoMailFormatMIME ' eller 0

            .ContentBase = "http://www.jorden.com"

            .ContentLocation = "pictures/"

            .Body = vMeddelandet

            .Send

       End With

 

       Set SendMail = Nothing

 

När e-postprogrammet visar filen tellus.gif kommer den att lägga till ContentBase- och ContentLocation-värdena först i sökvägen. I det här fallet kommer den att visa http://www.jorden.com/pictures/tellus.gif.

Det finns dock vissa mailprogram som ej verkar vilja stödja CententBase och ContentLocation. Lösningen är då att skriva hela sökvägen till bilden direkt i HTML koden.

 

Bilagor

NewMail-objektet har en metod som medger att man skickar bilagor med meddelandet. Metoden heter AttachFile, och den har följande syntax och parametrar:

 

       SendMail.AttachFile(Source [, FileName] [, EnvodingMethod] )

Parameter

Beskrivning

Source

 

Obligatorisk. Detta är den fullständiga sökvägen till filen som skall bifogas.

 

FileName

 

Valfri. Denna rubrik visas under bilagan när den visas hos e-postklienten.

 

EncodingMethod

Valfri. Metoden för kodning av bilagan, Standardmetoden är UUENCODE.
Möjliga alternativ är
CdoEncodingUUencode och CdoEncodingBase64.

 

Så här kan ett meddelande se ut :

 

       Set SendMail = CreateObject("CDONTS.NewMail")

      

       With SendMail

            .From = "Jimmy@rymden.com"

            .To = "Frida@jorden.com"

            .Subject = "Filen du frågade efter!"

            .Body = "Hej, här kommer filen du frågade efter !"

            .AttachFile"c:\schema.xls", "Schema"

            .Send

       End With

 

       Set SendMail = Nothing

 

AttachFile-metoden lägger till filen c:\schema.xls som en bilaga till meddelandet. Rubriken till bilagan blir Schema , och eftersom ingen kodningsmetod är angiven kommer bilagan att kodas med hjälp av UUENCODE . Alla bilagor får denna kodning som standard om du inte ändrar MailFormat-egenskapen eller anger en kodningstyp i anropet till AttachFile.

 

Oftast så kopplar man en uppladdnings funktion till sidan för att få in filen på serverns hårddisk. SA-Fileup eller ASPUpload är 2 bra komponenter som fixar det.

 

Egenskapen MailFormat

Standardformatet för alla meddelanden som skapas med NewMail-objektet är ren text. MailFormat-egenskapen låter oss välja mellan MIME (Multi Internet Mail Extension) och ren text. Vid format valet ren text (CdoMailFormatText) kommer meddelandet att formateras med hjälp av RFC 822 och UUENCODE. Om du väljer MIME-formatering (CdoMailFormatMIME) kommer MIME-format att användas.

 

MIME-formatering är designad så att meddelanden med många olika sorters innehåll kan överföras mellan olika nätverks- meddelandehanteringsmiljöer.

 

Skriv så här för att ändra formateringen till MIME-formatering :

      

            SendMail.MailFormat = CdoMailFormatMIME ' eller 0

 

Ändringarna gäller endast just detta meddelande och måste anges för alla meddelanden som skickas.

 

Som jag skrev ovan så kommer ändringar av MailFormat-egenskapen även att påverka kodningsmetoden för meddelandet. För meddelanden som ör formaterade som ren text kommer bilagor att kodas med hjälp av UUENCODE. Bilagor till meddelanden i MIME-format kommer att kodas med hjälp av Base64.

 

Om du anger att en bilaga ska kodas med hjälp av Base64 kommer formatet på meddelandet som bilagan hör till att ändras till CdoMailformatMIME.

 

Formatval

Det finns alltså ett antal olika kodnings- och formateringsvarianter. Vilka är då bäst att använda? Svaret beror på syftet med meddelandet samt mottagarens identitet.

 

Här är några tips som du kan tänka på vid val av format:

 

·         Nar du använder CDONTS för att skicka enkla administrativa eller informativa e-postmeddelanden till små grupper eller till dig själv, är du mer intresserad av innehållet i mailet än på utseendet av det. Det krävs en hel del extra arbete och kod för att skicka ett meddelande i HTML format. Det klokaste är alltså att i detta fallet endast skicka ett meddelande med ren text.

·         Om du använder CDONTS för att skriva och skicka e-post till en större grupp, till exempel medlemmarna på hemsidan eller prenumeranterna, kan utseendet vara av vikt. I så fall kan du ta dig det extra besväret med att formatera det i HTML. Lättast är att skapa meddelandet i en HTML-editor och sedan kopiera in HTML koden i meddelandet.

·         Ta hänsyn till storleken på meddelandet. Meddelanden som formateras som ren text blir generellt sett mindre. När du använder HTML-formatering så läggs det till mycket extra kod i meddelandet. Det kan göra att storleken på mailet kan bli mycket större än vad det blir som ren text. Även om överföringarna nu för tiden är snabba så får man ta hänsyn till mottagarna som kanske tar emot meddelandet via t ex mobiltelefonen.

Ta hänsyn till mottagarens e-postklient som kanske ej kan visa meddelanden som är formaterade med HTML.

 © 2010 Staff consulting - Jimmy Staff