Je wilt graag e-mails versturen vanaf jouw website met ASP, op een goede en veilige manier? In classic ASP (of VBScript) gebruik je CDOSYS om e-mail te versturen vanaf een website gehost op Windows Server IIS, en met het CDO.Configuration object configureer je CDOSYS om dat via TLS en authenticated SMTP te doen. Mooi hè? :)
Dit artikel richt zich op het gebruik van CDOSYS, in combinatie met authenticated SMTP en TLS-versleuteling. Deze twee voorwaarden zijn verplicht bij Vevida om van smtp.vevida.com gebruik te kunnen maken voor het versturen van een e-mail vanaf jouw website. Veel andere hostingproviders hanteren diezelfde voorwaarden.
Standaard maakt CDOSYS gebruik van de in Windows ingebouwde “pick-up directory”, waar vanuit de IIS SMTP-service alle berichten verstuurt die daar worden geplaatst. Bij sommige hostingproviders moet je de configuratie van CDOSYS aanpassen om van een externe SMTP-server gebruik te maken. Bijvoorbeeld smtp.vevida.com.
Voor deze SMTP-server moet ook geconfigureerd zijn dat de verbinding met TLS versleuteld is. En er moet met een e-mailadres en wachtwoord op de SMTP-server worden ingelogd, dit heet SMTP-authenticatie. Dit draagt zorg voor een betere beveiliging van uw gegevens en een hogere zekerheid van de e-mailbezorging bij de ontvanger. Hiervoor is het CDO.Configuration object nodig.
Het goed configureren (instellen) van CDOSYS lost ook de foutmelding “The “SendUsing” configuration value is invalid.” op. Belangrijk dus!
Een voorbeeldfunctie in ASP/VBScript, waar alles in zit, is:
<%@ Language=VBScript %>
<%
Sub send_eMail()
Dim myMail, Fields, strFrom, strTo
strFrom = "e-mailadres verzender"
strTo = "e-mailadres ontvanger"
' http://msdn.microsoft.com/en-us/library/ms526318(v=exchg.10).aspx
' Its good practice to use the module constants defined in the
' type library for the names. The full names are used here to
' indicate that this is what is going on
'
Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing"
Const cdoSendUsingPort = 2
Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
Const cdoSMTPServerPort = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
Const cdoSMTPConnectionTimeout = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"
Const cdoSMTPAuthenticate = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"
Const cdoBasic = 1
Const cdoSendUserName = "http://schemas.microsoft.com/cdo/configuration/sendusername"
Const cdoSendPassword = "http://schemas.microsoft.com/cdo/configuration/sendpassword"
' Use SSL for the connection (False or True)
Const cdoSendTLS = "http://schemas.microsoft.com/cdo/configuration/smtpusessl"
Set myMail = CreateObject("CDO.Message")
Set myMail.Configuration = CreateObject("CDO.Configuration")
Set Fields = myMail.Configuration.Fields
' SMTP-configuratie
With Fields
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServer) = "smtp.vevida.com"
.Item(cdoSMTPServerPort) = 25
.Item(cdoSMTPConnectionTimeout) = 10
.Item(cdoSMTPAuthenticate) = cdoBasic
.Item(cdoSendUserName) = "gebruikersnaam"
.Item(cdoSendPassword) = "wachtwoord"
.Item(cdoSendTLS) = true
.Update
End With
' Stel afzender, ontvanger, onderwerp en bericht in
myMail.From = strFrom
myMail.To = strTo
myMail.Subject = "Dit is het onderwerp van mijn bericht."
myMail.TextBody = "Dit is de tekst van mijn bericht."
' Verstuur de e-mail
myMail.Send
' Verwijder de objecten
Set Fields = nothing
Set myMail.Configuration = nothing
Set myMail = nothing
End Sub
%>
Verander “gebruikersnaam” met het e-mailadres van de verzender en “wachtwoord” met het bijbehorende wachtwoord.
Dit is een ASP Sub en dient als zodanig aangeroepen te worden:
<%@ Language=VBScript %>
<%
send_eMail()
%>
Door de regels Sub send_eMail()
en End Sub
te verwijderen is dit eenvoudig in een bestaand ASP-script of formulier te verpakken.