Skicka mail med cdonts
Förord
Det är många som har frågat hur man gör för att skicka mail från en ASP-sida. Jag tänkte förklara hur man använder sig av CDONTS (Microsoft Collaboration Data Objects) för Windows NT Server. Det finns ett flertal funktioner till CDONTS men objektet NewMail är det jag tänkte behandla i denna artikel.Innehåll
»»
»
CDONTS som finns att ladda hem här till höger avser de maskiner som inte har IIS, exempelvis Windows 98 som använder PWS webbserver. Alla IIS maskiner har CDONTS installerat default - men dock är den inte uppsatt automatiskt. Se då länken ovan i relaterat till:
Anropa CDONTS
För att instansiera objektet NewMail skriver vi:
Set SMTP = Server.CreateObject("CDONTS.NewMail")
From
För att berätta från vem mailet är skickat så använder vi .From egenskapen. Denna egenskap måste finnas med och man kan inte ange fler avsändare.
SMTP.From = "justme@myaddress.com"
To
Mottagarens mailadress anges med .To egenskapen. Egenskapen .To kan användas för en eller fler mailadresser och de måste då separeras med ett semikolon ;.
SMTP.To = "friend1@address1.com;friend2@address2.com"
CC
egenskapen .CC används för att skicka en kopia till någon. Förutom .CC finns även .Bcc och det används för att skicka en dold kopia (även kallad blind kopia). Ingen av dessa engenskaper måste användas när man skriver mailet.
SMTP.Cc = "friend3@address3.com;friend4@address4.com"
SMTP.Bcc = "friend5@address5.com;friend6@address6.com"
Subject
Det är viktigt att skicka en rubrik, kallad subject och är en förklaring om vad mottagaren förväntas läsa i detta mailet. Du måste inte skicka med ett subjekt, men det är en artighet att skriva det.
SMTP.Subject = "sending email via CDONTS NewMail"
BodyFormat
Egenskapen BodyFormat sätter formatet på texten. Du kan använda dig av två typer för att skicka ett email, antingen används 0 för att skicka meddelandet som en HTML-text, eller 1 som betyder att det är ren textinformation. Om du inte använder dig av egenskapen .BodyFormat så blir det automatiskt vanlig text.
SMTP.BodyFormat = 1
MailFormat
Hur mailet skall skickas över Internet kanske inte är det första man tänker på. Det finns i alla fall två typer: 0 indikerar att objektet skickas med MIME format, 1 betyder att det skickas i ren text. Du måste inte ange .MailFormat och default är 1. Denna egenskap används främst få man skickar ett Attachmen (bifogat objekt).
SMTP.MailFormat = 0
Importance
Att sätta Importance egenskapen tillåter dig att bestämma hur viktigt mailet skall vara. Du sätter 0 om det inte är viktigt, 1 om det är viktigt och 2 om det är mycket viktigt.
SMTP.Importance = 2
ContentLocation
Med denna parameter kan du sätta en absolut eller relativ sökväg som default är till alla de bifogade bilder och annat som du infogar i ditt mail. Denna parameter används när man arbetar med MIME formatet.
Istället för att skriva
Value
Du kan även använda dig av en funktion som heter .Value för att skicka in speciella parametrar. Exempel på detta kan vara Confidential - alltså att även mailet går vidare till en mottagare som den primära mottagaren inte ser. Funktioner som dessa varierar lite på vilken mailklient som används.
SMTP.Value("Reply-To") = "Chefen"
SMTP.Value("Confidential") = "För en direktrapport"
Du kan även använda parametrar som "To", "From", "Subject", och "Date".
Body
Att nu bifoga själva meddelandet gör man genom att sätta det i .Body egenskapen. Detta kan vara ren text eller HTML-kod som kan användas (se .BodyFormat). Du måste inte skicka med något i .Body men mail brukar innehålla någon form av text.
SMTP.Body = "Sending email with CDONTS NewMail" &_
"objects is easy! Try it!"
AttachFile
Om vi vill inkludera någonting till vårt mail så använder vi .AttachFile metoden. Denna metod har tre parameterar som skall användas:
SMTP.Attachfile [källa], [filnamn], [kodningstyp]
Källa
Den första parametern är källa - innehållande den fulla sökvägen inklusive filnamnet.
Filnamn
Detta är valfritt att använda och här anger du filnamnet som kommer synas som den bifogade filen.
Kodningstyp
Detta är valfritt. Du anger 0 vilket innebär att den bifogade filen skickas i kodat format enligt UUEncode standard. 1 betyder att den bifogade filen skickas med Base64 format. Base64 är det som oftast används och UUEncode är ett äldre format.
Om MailFormat sätts till 1, blir default EncodingMethod 0. Om MailFormat sätts till 0, blir EncodingMethod 1.
Info - kodningstyp används för att översätta alla ASCII tecken över 127 så att man exempelvis inte skickar ÅÄÖ över nätet för det är faktiskt så att man endast använder 127 tecken på Internet och Mail. Här läser man in tre tecken i taget och de räknas om och ersätts med 4 tecken. Därmed kan man säga att alla bifogade filer blir 25% större eftersom var 3:e tecken får ett extratecken.
Exempel på en attachment kan vara:
SMTP.AttachFile "c:\inetpub\wwwroot\exempel\fil1.zip"
eller om IIS letar reda på sökvägen åt dig:
SMTP.AttachFile Server.MapPath("/fil1.zip")
Send
För att avslutningsvis skicka iväg mailet så används egenskapen .Send och mailet skickas iväg.
SMTP.Send
Frigör objektet
Efter att du skickat mailet skall vi frigöra CDONTS från minnet och det görs genom att sätta det till Nothing.
Set SMTP = Nothing
Det går också att göra detta på ett snabbare sätt om man nu behöver det.
För de konstanter som finns kan du skapa följande includefil och använda dig av:
Spara sedan denna fil som cdovbs.inc, så kan du använda den på följande sätt sedan:
Nedan ser du en exempelkod för ett vanligt mail via cdonts.
Nedan ser du ett exempel hur du gör för att skicka epost i html-format
Vanliga fel:
» Error 8002801d Library not registered
Skicka om
Ytterligare en sak är viktigt att tänka på. Om du mailar till fler personer på samma gång måste du tyvärr skriva Set SMTP = Nothing även innanför loopen för att posterna skall gå iväg korrekt. Ett exempel nedan är att du skickar ett mail till alla i dina användare från din databas.
Nu har du fått en inblick i hur du använder CDONTS för att skicka ett mail. Nästa kurs kommer presentera hur du gör för att skriva ett system så du kan göra ett program för att göra en egen mailinglista.
Var denna artikeln användbar?
Om du gör någon intressant (eller kanske något konstigt fel) på grund av detta material så skicka gärna det med ett mail eller bifoga en länk till mig så presenterar jag detta som ytterligare exempelfiler för kursen. Om detta innehållet är felaktigt eller du lärt dig fler finesser så skriv gärna en rad eller varför inte en egen kurs baserat på dina erfarenheter. Sänd gärna in dina tips till denna kurs.
/Pelle Johansson
Anropa CDONTS
För att instansiera objektet NewMail skriver vi:
Set SMTP = Server.CreateObject("CDONTS.NewMail")
From
För att berätta från vem mailet är skickat så använder vi .From egenskapen. Denna egenskap måste finnas med och man kan inte ange fler avsändare.
SMTP.From = "justme@myaddress.com"
To
Mottagarens mailadress anges med .To egenskapen. Egenskapen .To kan användas för en eller fler mailadresser och de måste då separeras med ett semikolon ;.
SMTP.To = "friend1@address1.com;friend2@address2.com"
CC
egenskapen .CC används för att skicka en kopia till någon. Förutom .CC finns även .Bcc och det används för att skicka en dold kopia (även kallad blind kopia). Ingen av dessa engenskaper måste användas när man skriver mailet.
SMTP.Cc = "friend3@address3.com;friend4@address4.com"
SMTP.Bcc = "friend5@address5.com;friend6@address6.com"
Subject
Det är viktigt att skicka en rubrik, kallad subject och är en förklaring om vad mottagaren förväntas läsa i detta mailet. Du måste inte skicka med ett subjekt, men det är en artighet att skriva det.
SMTP.Subject = "sending email via CDONTS NewMail"
BodyFormat
Egenskapen BodyFormat sätter formatet på texten. Du kan använda dig av två typer för att skicka ett email, antingen används 0 för att skicka meddelandet som en HTML-text, eller 1 som betyder att det är ren textinformation. Om du inte använder dig av egenskapen .BodyFormat så blir det automatiskt vanlig text.
SMTP.BodyFormat = 1
MailFormat
Hur mailet skall skickas över Internet kanske inte är det första man tänker på. Det finns i alla fall två typer: 0 indikerar att objektet skickas med MIME format, 1 betyder att det skickas i ren text. Du måste inte ange .MailFormat och default är 1. Denna egenskap används främst få man skickar ett Attachmen (bifogat objekt).
SMTP.MailFormat = 0
Importance
Att sätta Importance egenskapen tillåter dig att bestämma hur viktigt mailet skall vara. Du sätter 0 om det inte är viktigt, 1 om det är viktigt och 2 om det är mycket viktigt.
SMTP.Importance = 2
ContentLocation
Med denna parameter kan du sätta en absolut eller relativ sökväg som default är till alla de bifogade bilder och annat som du infogar i ditt mail. Denna parameter används när man arbetar med MIME formatet.
Istället för att skriva
Value
Du kan även använda dig av en funktion som heter .Value för att skicka in speciella parametrar. Exempel på detta kan vara Confidential - alltså att även mailet går vidare till en mottagare som den primära mottagaren inte ser. Funktioner som dessa varierar lite på vilken mailklient som används.
SMTP.Value("Reply-To") = "Chefen
SMTP.Value("Confidential") = "För en direktrapport"
Du kan även använda parametrar som "To", "From", "Subject", och "Date".
Body
Att nu bifoga själva meddelandet gör man genom att sätta det i .Body egenskapen. Detta kan vara ren text eller HTML-kod som kan användas (se .BodyFormat). Du måste inte skicka med något i .Body men mail brukar innehålla någon form av text.
SMTP.Body = "Sending email with CDONTS NewMail" &_
"objects is easy! Try it!"
AttachFile
Om vi vill inkludera någonting till vårt mail så använder vi .AttachFile metoden. Denna metod har tre parameterar som skall användas:
SMTP.Attachfile [källa], [filnamn], [kodningstyp]
Källa
Den första parametern är källa - innehållande den fulla sökvägen inklusive filnamnet.
Filnamn
Detta är valfritt att använda och här anger du filnamnet som kommer synas som den bifogade filen.
Kodningstyp
Detta är valfritt. Du anger 0 vilket innebär att den bifogade filen skickas i kodat format enligt UUEncode standard. 1 betyder att den bifogade filen skickas med Base64 format. Base64 är det som oftast används och UUEncode är ett äldre format.
Om MailFormat sätts till 1, blir default EncodingMethod 0. Om MailFormat sätts till 0, blir EncodingMethod 1.
Info - kodningstyp används för att översätta alla ASCII tecken över 127 så att man exempelvis inte skickar ÅÄÖ över nätet för det är faktiskt så att man endast använder 127 tecken på Internet och Mail. Här läser man in tre tecken i taget och de räknas om och ersätts med 4 tecken. Därmed kan man säga att alla bifogade filer blir 25% större eftersom var 3:e tecken får ett extratecken.
Exempel på en attachment kan vara:
SMTP.AttachFile "c:\inetpub\wwwroot\exempel\fil1.zip"
eller om IIS letar reda på sökvägen åt dig:
SMTP.AttachFile Server.MapPath("/fil1.zip")
Send
För att avslutningsvis skicka iväg mailet så används egenskapen .Send och mailet skickas iväg.
SMTP.Send
Frigör objektet
Efter att du skickat mailet skall vi frigöra CDONTS från minnet och det görs genom att sätta det till Nothing.
Set SMTP = Nothing
Det går också att göra detta på ett snabbare sätt om man nu behöver det.
SMTP.Body = "Testar"
SMTP.Send "you@home.se", "me@home.se", "ärende"
Set SMTP = Nothing
För de konstanter som finns kan du skapa följande includefil och använda dig av:
<%
'--------------------------------------------------------------------
' Microsoft CDONTS.NewMail
' (c) 1999 Microsoft Corporation. All Rights Reserved.
'
' More NT Option Pack Documentation:
' http:///iishelp/iis/htm/asp/amsm0qzj.htm
' CDONTS.NewMail constants include file for VBScript '--------------------------------------------------------------------
'---- BodyFormat Property ----
Const CdoBodyFormatHTML = 0 ' The Body property is to include (HTML).
Const CdoBodyFormatText = 1 ' The Body property is to be exclusively in plain text (default value).
'---- MailFormat Property ----
Const CdoMailFormatMime = 0 ' The NewMail object is to be in MIME format.
Const CdoMailFormatText = 1 ' The NewMail object is to be in uninterrupted plain text (default value).
'---- Importance Property ----
Const CdoLow = 0 ' Low importance
Const CdoNormal = 1 ' Normal importance (default)
Const CdoHigh = 2 ' High importance
'---- AttachFile and AttachURL Methods ----
Const CdoEncodingUUencode = 0 ' The attachment is to be in UUEncode format (default).
Const CdoEncodingBase64 = 1 ' The attachment is to be in base 64 format.
%>
Spara sedan denna fil som cdovbs.inc, så kan du använda den på följande sätt sedan:
Exempel 1
Nedan ser du en exempelkod för ett vanligt mail via cdonts.
<%@LANGUAGE="VBSCRIPT"%>
<%
Option Explicit
Dim SMTP
%>
<%
Set SMTP = Server.CreateObject("CDONTS.NewMail")
SMTP.From = "info@pellesoft.se"
SMTP.To = "mottagare@foretag.se"
SMTP.Subject = "Ett testmeddelande"
SMTP.Body = "Detta är ett testmeddelande som du kan använda"
SMTP.BodyFormat = CdoBodyFormatText
SMTP.MailFormat = CdoMailFormatText
SMTP.Importance = CdoNormal
SMTP.Send
Set SMTP = Nothing
%>
CDONTS.NewMail exempel
Ditt mail har nu skickats!
Exempel 2
Nedan ser du ett exempel hur du gör för att skicka epost i html-format
<%@LANGUAGE="VBSCRIPT"%>
<%
Option Explicit
Dim SMTP
%>
<%
Set SMTP = Server.CreateObject("CDONTS.NewMail")
SMTP.From = "info@pellesoft.se"
SMTP.To = "mottagare@foretag.se"
SMTP.Subject = "Ett testmeddelande"
HTML = HTML & ""
HTML = HTML & ""
HTML = HTML & "Ett mail skickat med html-format "
HTML = HTML & ""
HTML = HTML & ""
HTML = HTML & ""
HTML = HTML & "Pellesoft visar ett exempel
"
HTML = HTML & "på att skicka html-mail
"
HTML = HTML & "Som du ser om du använder"
HTML = HTML & "en webbläsare som kan visa htmlmail, att detta"
HTML = HTML & "faktiskt är html."
HTML = HTML & "
"
HTML = HTML & ""
HTML = HTML & ""
SMTP.Body = HTML
SMTP.BodyFormat = CdoBodyFormatHTML
SMTP.MailFormat = CdoMailFormatMime
SMTP.Importance = CdoNormal
SMTP.Send
Set SMTP = Nothing
%>
CDONTS.NewMail exempel
Ditt mail har nu skickats!
Vanliga fel:
» Error 8002801d Library not registered
Skicka om
Ytterligare en sak är viktigt att tänka på. Om du mailar till fler personer på samma gång måste du tyvärr skriva Set SMTP = Nothing även innanför loopen för att posterna skall gå iväg korrekt. Ett exempel nedan är att du skickar ett mail till alla i dina användare från din databas.
Meddelande = "Ett meddelande till alla personer i min tabell"
Do While Not rst.EOF
Set SMTP = Server.CreateObject("CDONTS.NewMail")
SMTP.From = "info@pellesoft.se"
SMTP.To = Rst("epost")
SMTP.Subject = Meddelande
SMTP.Body = HTML
SMTP.Send
Set SMTP = Nothing
Rst.MoveNext
Loop
Sammanfattning
Nu har du fått en inblick i hur du använder CDONTS för att skicka ett mail. Nästa kurs kommer presentera hur du gör för att skriva ett system så du kan göra ett program för att göra en egen mailinglista.Var denna artikeln användbar?
Om du gör någon intressant (eller kanske något konstigt fel) på grund av detta material så skicka gärna det med ett mail eller bifoga en länk till mig så presenterar jag detta som ytterligare exempelfiler för kursen. Om detta innehållet är felaktigt eller du lärt dig fler finesser så skriv gärna en rad eller varför inte en egen kurs baserat på dina erfarenheter. Sänd gärna in dina tips till denna kurs.
/Pelle Johansson
0 Kommentarer