Win 2012R2 Server - ActiveX component can't create object aspmail 4.0 (SMTPsvg.Mailer) IIS8.5

2

I've had to move a classic ASP application from windows server 2008 to Windows Server 2012R2 and the app uses a com object called (aspmail 4.0) from a company called ServerObjects - which is no longer in business (at least there's no way to contact them).

Anyway, I've registered the DLL (C:\Windows\SysWOW64\regsvr32.exe d:\components\aspmail4\smtpsvg.dll), that works as I checked the registry (it's 100% installed no issues nor errors).

I've verified the DLL is correct and the registry is pointing to the correct path (and that there is only 1 path).

I've given every permission I can think of (even tested it with the "Everyone" account) to the DLL file (and IUSR account).

With 32bit disabled in the app pool, I get the "ActiveX component can't create object." error.

With 32bit enabled in the app pool, it just crashes the page (generates a fatal exception) with an error in the event log as follows:

Faulting application name: w3wp.exe, version: 8.5.9600.16384, time stamp: 0x52157ba0
Faulting module name: smtpsvg.dll, version: 4.1.0.0, time stamp: 0x2a425e19
Exception code: 0xc0000005
Fault offset: 0x0004e001
Faulting process id: 0x3f0
Faulting application start time: 0x01cfe5f2dc426b4d
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: d:\components\aspmail4\smtpsvg.dll
Report Id: 3dd63a38-51e6-11e4-80da-0cc47a302001
Faulting package full name: 
Faulting package-relative application ID: 

Is there some undocumented setting I'm missing? I've gone to dozens of forums and followed everything to the letter, but nothing works (8 hrs now, hair is almost completely pulled out).

asp-classic
com
smtp
email-integration
iis-8.5
asked on Stack Overflow Oct 12, 2014 by MC9000 • edited Oct 12, 2014 by user692942

2 Answers

0

Check Advanced Settings for Application Pool, option "Enable 32-Bit application"

answered on Stack Overflow Oct 12, 2014 by Zam
0

So I've actually come across this issue myself while migrating some old sites to Windows Server 2012 server and it appeared to be because of a dependency on cdonts.dll which was also known as Collaboration Data Objects for NTS (CDONTS) and was superseded sometime ago by Collaboration Data objects for Windows 2000 (CDOSYS).

See Where to acquire the CDO Libraries (all versions)

Unfortunately, the legacy code I was migrating including references to

Dim cdo: Set cdo = Server.CreateObject("CDONTS.NewMail")

which would cause the error

ActiveX component can't create object

Instead of writing the code, after a little research found it would be easier to just migrate the 32-bit DLL cdonts.dll from the old server to the new one and see if I can register it with the system, here are the steps.

  1. Located cdonts.dll in %SystemRoot%\System32 on the old server.
  2. Copied the DLL to the new server

    This would require some forethought. If the server was a running a 64-bit version of the OS the file would need to be copied into

    %SystemRoot%\SysWow64
    

    with the other 32-bit subsystem DLLs, otherwise, if it was a 32-bit OS it would need to be copied into

    %SystemRoot%\System32
    

    It's worth noting that the DLL can reside anyway as long as the correct regsvr32.exe is used, but for the sake of keeping things tidy followed this workflow.

  3. Use the correct subsystem version of regsvr32.exe to register the DLL. In this case, it was a 64-bit server so needed to register the DLL using regsvr32 in the 32-bit subsystem folder.

  4. Test the application. Found that the error had gone and the script worked as expecting using the legacy component.

    C:\>cd %systemroot%\syswow64
    C:\Windows\SysWow64\>regsvr32 cdonts.dll
    

Link that helped me: How to Use CDONTS.DLL on Windows Server 2012 R2

answered on Stack Overflow Feb 28, 2017 by user692942 • edited Feb 28, 2017 by user692942

User contributions licensed under CC BY-SA 3.0