ASP foutmelding: cdo.message.1 error 80040220 The "SendUsing" configuration value is invalid

Sinds kort draaien onze Windows 2003 webservers (IIS 6.0) met AppPools (application pools) onder een eigen IUSR-user identity. Werkt prima! :) Echter, soms kom je tijdens het opzetten en testen van een dergelijke set-up nog wel eens een foutmelding tegen.

Bijvoorbeeld bij het versturen van een e-mail via ASP (CDOSYS):

The "SendUsing" configuration value is invalid.


Enig zoekwerk bracht mij bij de website realityme.net, waarop uitgelegd staat dat deze foutmelding veroorzaakt wordt omdat de IIS_WPG group geen leesrechten heeft op de SMTP-service van IIS.

Oplossing

Stel leesrechten in op de service SMTPSVC/1 (Computer Management -> Services and Applications -> Internet Information Services (IIS) Manager -> Default SMTP Virtual Server -> Properties -> Security -> Add) én op de SmtpSvc node van de Metabase (Metabase Explorer -> SmtpSvc Permissons -> Add). Zoals aangegeven in onderstaande afbeelding:

Werk je liever via de commandline, download dan MetaAcl.vbs van Microsoft, of hier (als tekst, sla op als .vbs). De aanroep via cscript.exe is:

cscript.exe Metaacl.vbs IIS://localhost/SMTPSVC/1 IIS_WPG RUE

The “SendUsing” configuration value is invalid: mogelijkheid #2

verplicht e-mail verzenden via SMTP

Een tweede mogelijke oorzaak van deze foutmelding is dat de webserver geen lokale SMTP-service biedt, en dat er gebruik gemaakt moet worden van een externe SMTP-server. CDOs standaard instelling is om de lokale pick-up directory van IIS SMTPsvc (C:\Inetpub\mailroot\Pickup) te gebruiken, door middel van het property cdoSendUsingPort = 1. In dat kan in dit geval niet.

Het ASP-script moet aangepast worden om van de externe server gebruik te maken, met CDO Configuration.

Voorbeeld ASP script: SMTP-server + TLS + SMTP authenticatie

[...]
 ' http://msdn.microsoft.com/en-us/library/ms526318%28EXCHG.10%29.aspx
 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)          = "inlognaam/e-mailadres verzender"
  .Item(cdoSendPassword)          = "wachtwoord verzender"
  .Item(cdoSendTLS)               = true
  .Update
 End With
 [...]