












| | XPSMTP.DLL - SQL Server SMTP Mail XPversion: 1.1.0.8 last updated: 19 April 2005 platform: MSDE, SQL Server 7.0 or 2000 running Windows NT 4.0 and higher
Content:
Description Usage Parameters Return codes Installation Uninstall Version and platform support Known limitations FAQ Troubleshooting License Planned functionality enhancements Realized functionality enhancements Change log
XPSMTP provides a SMTP based SQL Mail solution for sending MIME based email over SMTP, implemented as an Extended Stored Procedure.
It does not require any software to be installed, just a SMTP email server that can handle the outgoing mail request. XPSMTP is using TCP/IP sockets to communicate to port 25. XPSMTP does not spawn additional threads, the xp_smtp_sendmail request is handled on the same thread as it is being called on by SQL Server. Each call to xp_smtp_sendmail establishes a connection to the SMTP server and disconnects when done sending the email. The connection is created using asynchronous communication and aborts based on a timeout value (@timeout which by default is 10000 milliseconds, so 10 seconds). XPSMTP coverage in SQL Server Magazine June 2003: Sending Mail from SQL Server by Brian Moran 
XPSMTP only supports named parameters, since the number possible of parameters is already big and will get extended over time and since most of these parameters are optional, XPSMTP does not support ordinal parameters, mainly to reduce complexity, ambiguity and the change on mistakes. -- ************************************************************************ -- Begin of sample section -- ************************************************************************ -- ************************************************************************ -- minimum number of parameters -- ************************************************************************ declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @FROM = N'MyEmail@MyDomain.com', @TO = N'MyFriend@HisDomain.com' select RC = @rc go
-- ************************************************************************ -- more comprehensive example -- ************************************************************************ declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @FROM = N'MyEmail@MyDomain.com', @FROM_NAME = N'Joe Mailman', @TO = N'MyFriend@HisDomain.com', @CC = N'MyOtherFriend@HisDomain.com', @BCC = N'MyEmail@MyDomain.com', @priority = N'HIGH', @subject = N'Hello SQL Server SMTP Mail', @message = N'Goodbye MAPI, goodbye Outlook', @type = N'text/plain', @attachments= N'c:\attachment1.txt;c:\attachment2.txt', @server = N'mail.mydomain.com' select RC = @rc go -- ************************************************************************ -- sending HTML mail -- ************************************************************************ declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @FROM = N'MyEmail@MyDomain.com', @TO = N'MyFriend@HisDomain.com', @subject = N'My first HTML mail', @message = N'<HTML><H1>This is some HTML content</H1></HTML>', @type = N'text/html' select RC = @rc go -- ************************************************************************ -- sending HTML mail -- ************************************************************************ declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @FROM = N'MyEmail@MyDomain.com', @FROM_NAME = N'Joe Mailman', @TO = N'MyFriend@HisDomain.com', @subject = N'ASCII HTML messagefile', @type = N'text/html', @messagefile = N'c:\msg.html' select RC = @rc go -- ************************************************************************ -- all possible parameters -- ************************************************************************ declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @FROM = N'MyEmail@MyDomain.com', @FROM_NAME = N'My Full Name', @replyto = N'MyReplyAddress@MyDomain.com', @TO = N'MyFriend@HisDomain.com', @CC = N'', @BCC = N'', @priority = N'NORMAL', @subject = N'Hello SQL Server SMTP Mail', @type = N'text/plain', @message = N'Goodbye MAPI, goodbye Outlook', @messagefile= N'', @attachment = N'', @attachments= N'', @codepage = 0, @timeout = 10000, @server = N'mail.mydomain.com' select RC = @rc go -- ************************************************************************ -- using variables -- ************************************************************************ declare @FROM NVARCHAR(4000), @FROM_NAME NVARCHAR(4000), @TO NVARCHAR(4000), @CC NVARCHAR(4000), @BCC NVARCHAR(4000), @priority NVARCHAR(10), @subject NVARCHAR(4000), @message NVARCHAR(4000), @type NVARCHAR(100), @attachments NVARCHAR(4000), @codepage INT, @rc INT select @FROM = N'MyEmail@MyDomain.com', @FROM_NAME = N'Joe Mailman', @TO = N'MyFriend@HisDomain.com', @CC = N'', @BCC = N'', @priority = N'High', @subject = N'SQL Server SMTP mail', @message = N'<HTML><H1>Hello SQL Server SMTP SQL Mail</H1></HTML>', @type = N'text/html', @attachments = N'', @codepage = 0
exec @rc = master.dbo.xp_smtp_sendmail @FROM = @FROM, @TO = @TO, @CC = @CC, @BCC = @BCC, @priority = @priority, @subject = @subject, @message = @message, @type = @type, @attachments = @attachments, @codepage = @codepage, @server = N'mail.sqldev.net'
select RC = @rc go-- ************************************************************************ -- using a dumpfile for diagnostics -- ************************************************************************ declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @FROM = N'MyEmail@MyDomain.com', @FROM_NAME = N'Joe Mailman', @TO = N'MyFriend@HisDomain.com', @subject = N'ASCII HTML messagefile', @type = N'text/html', @message = N'Hello World', @dumpmsg = N'C:\TEMP\dumpmsg.log' select RC = @rc go -- ************************************************************************ -- ping server -- ************************************************************************ declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @server = N'mail.sqldev.net', @port = 25, @ping = 1 select RC = @rc go -- ************************************************************************ -- End of sample section -- ************************************************************************
This is the complete list off parameters used by xp_smtp_sendmail. The parameter names used are case-insensitive. When a parameter is marked as mandatory (only @FROM and @TO) this means you have to provide a valid value, all other parameters are optional. Either because default values are provides, either because they are really optional in nature. | Name | Data types allowed | Default value | Mandatory | Value ranges | Description | | @FROM | NVARCHAR(4000), VARCHAR(8000) | NULL | Mandatory | | Email address of the sender | | @FROM_NAME | NVARCHAR(4000), VARCHAR(8000) | NULL | Optional | | Display name of the sender | | @TO | NVARCHAR(4000), VARCHAR(8000) | NULL | Mandatory | | Recipients, separated by commas | | @replyto | NVARCHAR(4000), VARCHAR(8000) | NULL | Optional | | Reply to email address | | @CC | NVARCHAR(4000), VARCHAR(8000) | NULL | Optional | | CC recipients, separated by commas | | @BCC | NVARCHAR(4000), VARCHAR(8000) | NULL | Optional | | BCC recipients, separated by commas | | @priority | NVARCHAR(10), VARCHAR(10) | NORMAL | Optional | LOW, NORMAL or HIGH | Priority of the message | | @subject | VARCHAR(4000), VARCHAR(8000) | NULL | Optional | | Subject of the email message | | @type | NVARCHAR(100), VARCHAR(100) | text/plain | Optional | text/plain text/html | Specifies the message content type as plain text or HTML | | @message | NVARCHAR(4000), VARCHAR(8000) | NULL | Optional | | Body text of the email message. The maximum line length is 1000 characters. Lines need to be separated using a carriage return linefeed (\r\n or using T-SQL char(13) | char(10)). | | @messagefile | NVARCHAR(4000), VARCHAR(8000) | NULL | Optional | Valid fully qualified file path and name. Size of file not larger than 64KB | Pointer to a file which contains the message text. The file can contain the message text as plain text or in HTML format. The file can either be ASCII or Unicode. The max. file size allowed is 64KB. The maximum line length is 1000 characters. Lines need to be separated using a carriage return linefeed (\r\n or using T-SQL char(13) | char(10)). | | @attachment | NVARCHAR(4000), VARCHAR(8000) | NULL | Optional | Valid fully qualified file path and name. | Pointer to file, to be included as attachment of the email message. | | @attachments | NVARCHAR(4000), VARCHAR(8000) | NULL | Optional | Valid fully qualified file path and name. | Pointers to files, to be included as attachments of the email messages, separated by semicolons (;) | | @server | NVARCHAR(4000), VARCHAR(8000) | smarthost | Optional | Valid hostname or IP address pointing an SMTP mail server | SMTP server, expressed as hostname or IP address. By default this is configured as "smarthost". | | @port | INT | 25 | Optional | Valid socket port number | Port number for SMTP service, default port 25 | | @codepage | INT | 0 | | | Codepage of strings supplied when using ASCII strings | | @timeout | INT | 10000 (=10 secs) | Optional | [0 >= WaitForSingleObject] | Connection timeout in milliseconds | | @dumpmsg | NVARCHAR(4000), VARCHAR(8000) | NULL | Optional | Valid fully qualified file path and name. | Dumps message to dump file. NOTE: Requires sysadmin role membership | | @ping | INT | NULL | Optional | [0 | 1] | Tries to connect to @server (using @timeout), if successfuly connected @rc = 0 otherwise @rc = 1. This can be used to validate connections to the SMTP server |
The procedure returns only two return codes, 0 (zero) indicating successful execution, 1 indicating failure always accompanied with an error message. This is how to retrieve the return code: declare @rc int exec @rc = master.dbo.xp_smtp_sendmail ... select @rc
To install XPSMTP follow these instructions: For SQL Server 7.0 download XPSMTP70.ZIP and unzip the files For SQL Server 2000, download XPSMTP80.ZIP and unzip the files Copy xpsmtpXX.dll into the SQL Server BINN directory. For SQL Server 7.0 copy XPSMTP70.DLL, for SQL Server 2000 copy XPSMTP80.DLL
For SQL Server 7.0 the default installation location is "C:\MSSQL7\BINN" For SQL Server 2000 the default location is "C:\Program Files\Microsoft SQL Server\MSSQL\Binn" Register the extended stored procedure using OSQL or SQL Query Analyzer by executing: -- SQL Server 7.0 install exec sp_addextendedproc 'xp_smtp_sendmail', 'xpsmtp70.dll' -- SQL Server 2000 install exec sp_addextendedproc 'xp_smtp_sendmail', 'xpsmtp80.dll' Grant rights to the correct set of users using OSQL or SQL Query Analyzer by executing: grant execute on xp_smtp_sendmail to public By default only the member of the sysadmin role have execution rights on the XP after it is being registered
To remove XPSMTP from a system follow these instructions: Force the DLL out of memory, using OSQL or SQL Query Analyzer by executing: dbcc xpsmtp70(free) -- for SQL Server 7.0 dbcc xpsmtp80(free) -- for SQL Server 2000 Unregistered the XP from the system, using OSQL or SQL Query Analyzer by executing: exec sp_dropextendedproc 'xp_smtp_sendmail' Delete the XPSMTP70.DLL or XPSMTP80.DLL from the SQL Server BINN directory
XPSMTP is tested and supported on:SQL Server 2000 (including all available service packs), running on Windows NT 4.0, Windows 2000 and Windows XP MSDE 2000 (including all available service packs), running on Windows NT 4.0, Windows 2000 and Windows XP
XPSMTP is supported on:SQL Server 7.0 (including all available service packs), running on Windows NT 4.0, Windows 2000 and Windows XP MSDE 1.0 (including all available service packs), running on Windows NT 4.0, Windows 2000 and Windows XP
XPSMTP is NOT supported or tested in any way or form on:SQL Server 7.0 or 2000 running on Windows 95, Windows 98, Windows 98 Second Edition or Windows Me MSDE 1.0 running on Windows 95, Windows 98, Windows 98 Second Edition or Windows Me MSDE 2000 running on Windows 95, Windows 98, Windows 98 Second Edition or Windows Me SQL Server 7.0 running on the Alpha processor
Note: SQL Server 7.0 and Windows NT 4.0 usage When using SQL Server 7.0 on Windows NT 4.0, you need to install Internet Explorer version 5.5 SP1 or higher, otherwise you might run into the following error message: "The data area passed to a system call is too small."
Q: Which RFC's is XPSMTP based on? A: The XPSMTP implementation is based on RFC 821, RFC 822 and RFC 2821 Q: Does XPSTMP rely on MAPI? A: XPSMTP does not rely on MAPI or any other Microsoft Outlook or Outlook Express components. Q: How can I use XPSMTP to test the connection to my mail server and check for the presence of an SMTP server A: XPSMTP provides a @ping option, which will try to connect to the host and port specified and send a SMTP HELO command to the server, when this is performed successfully, the return code of the XP is 0 (zero), in case of an error 1 is returned.
Example: -- ping the default settings (@server = N'smarthost', @port = 25) declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @ping = 1 select @rc -- ping the server using default port settings (@port = 25) declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @server = N'mail.sqldev.net', @ping = 1 select @rc -- ping server using @server and @port declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @server = N'mail.sqldev.net', @port = 25, @ping = 1 select @rc - Q: Why is an extra carriage return linefeed is inserted every 998th character?
A: XPSMTP uses a maximum line length of 1000 characters, minus two for storing a carriage return linefeed (\r\n) to terminate the line. When you are sending a message which contains a line or lines that are longer then the maximum line length, XPSMTP automatically inserts a carriage return linefeed (\r\n) before it sends the line to the SMTP server. If you have embedded carriage return linefeeds inside your message which occur before the maximum line length of 1000 characters, the string is terminate at that point and send to the server, in which case no extra carriage return linefeed is added. The problem occurs when you are using only using line feeds (\n) without the carriage return (\r) inside your message. So the workaround is to use carriage return linefeeds (\r\n) instead of linefeeds (\n). In T-SQL a carriage return linefeed can be represented using char(13) + char(10). In a future release XPSMTP will automatically be able to use both \n as a \r\n to terminate lines before exceeding the maximum line length of a 1000 characters. - Q: How do I use XPSMTP, for sending SQL Agent Alerts and job notitications?
A: Since SQL Agent does not use SQL Mail, but relies on a different MAPI based mail implementation (named SQL Agent Mail), which is hosted in a separate DLL (SEMMAP.DLL), it is not possible to replace the SQL Agent Alerts and job notifications directly with an SMTP based solution.
Technically you could achieve it by replacing the SEMMAP.DLL file with one that implements an SMTP based mail, which is something I have tried and works, but since replacing Microsoft DLL's renders your system unsupported this is not a viable solution that can be publicly shippped.
You can add extra job steps to your jobs to send a success or failure email, however this requires extra logic and does not cover the Alert scenario. Tibor Karaszi (SQL Server MVP) created a solution for Alerts using XPSMTP, which is available on http://www.dbmaint.com/SmtpAlerter.asp - Q: How do I use XPSMTP for send email from a Database Maintenance Plan?
A: The Database Maintenance Wizard uses xp_sendmail to send emails when executing the database maintenance plan. One solution therefore is to drop the existing xp_sendmail extended stored procedure and create a stored procedure with the same name and owner in the master database, that has the exact same parameters (names and data types) as the original xp_sendmail. Here you find an example of a stored procedure named xp_sendmail.
Alternatively you can use Db Maint, which provides better maintenance plans and includes SMTP based mail support. See http://www.dbmaint.com for details. - Q: Where can I get the source code of XPSMTP?
A: The source code of XPSMTP is not made publicly available. - Q: Is XPSMTP supported on a cluster?
A: Yes, you only need to make sure that the binary (xpsmtpXX.dll) is available in the BINN directory of every instance for each node.
Sending e-mail, returns the following error: Error: connecting to server smarthost
This is an indication that you do not have a smarthost defined or the smarthost entry can not be resolved. The default hostname that XPSMTP is using for sending e-mail is named "smarthost". To override this you have to supply the @server parameter, with a valid hostname pointing to an SMTP server. If the SMTP does not listen on the default SMTP socket port 25, you can override the used port using the @port parameter.
To determine if a smarthost defined use ping:
Pinging a undefined "smarthost", will results in: ping smarthost Ping request could not find host smarthost. Please check the name and try again.
Pinging a "smarthost", which can not be reached will result in: ping smarthost Pinging smarthost [192.168.1.201] with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. Ping statistics for 192.168.1.201: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), Pinging a "smarthost" which is defined and can be reached, will result in:
ping smarthost Pinging smarthost [175.45.9.106] with 32 bytes of data: Reply from 175.45.9.106: bytes=32 time=72ms TTL=59 Reply from 175.45.9.106: bytes=32 time=95ms TTL=59 Reply from 175.45.9.106: bytes=32 time=119ms TTL=59 Reply from 175.45.9.106: bytes=32 time=76ms TTL=59 Ping statistics for 175.45.9.106: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 72ms, Maximum = 119ms, Average = 90ms
For more information with regards to what a smarthost is, see the FAQ section.
Example: declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @server = N'mail.sqldev.net', @from = N'', @to = N'', @subject = 'test'
declare @rc int exec @rc = master.dbo.xp_smtp_sendmail @server = N'mail.sqldev.net', @port = 26, @from = N'', @to = N'', @subject = 'test' Sending e-mail to an external e-mail address returns in the following error: Server response: 550 5.7.1 Unable to relay for MyFriend@HisDomain.com
This is an indication that your mail server has not been enabled to relay, for more information on testing Open Relay check the following article at SecWiz Send e-mail using an external message file, return the following error: Error: @messagefile "c:\attachments\reports\StatusReport.htm" file size is larger then allowed max size of 65536 bytes
This is an indication that your message file exceeds the currently hardcode limit of 64KB, there is no work around for this in the current release, a future release will remove this limitation. List of general SMTP errors: | Number | Description | | 421 | <domain> service not available, closing | | 450 | request action aborted, local error in processing | | 500 | syntax error, command unrecognized | | 550 | requested action not take (mailbox not found) | | 551 | user not local | | 554 | transaction failed |
XPSMTP - Copyright © SQLDev.Net 1991-2004 (http://SQLDev.Net) All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of SQLDev.Net nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. Binaries, source code and any other parts of this distribution may not be incorporated into any software licensed under the terms of the GNU General Public License (GPL) or the GNU Lesser Public License (LGPL). Binaries, source code and any other parts of this distribution may not be incorporated into any software licensed under any license requiring source code disclosure of derivative works. Modified redistributions of source code, binaries and/or documentation must carry the above copyright as required by clauses (1) and (2) and may retain the name "SQLDev.Net" in source code, documentation and metadata. The name "SQLDev.Net" is a trademark of SQLDev.Net B.V. the Netherlands.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The next release will contain the following feature (subject to change): Authentication support: LOGIN PLAIN, AUTH LOGIN and CRAM MD5 Longer @message support; using text and ntext type parameters Multi part messages; @message1, @message2,... @message9. Plan is to support maximum 9 message parts, parts are in order based on the name of the parameter, no based on the order in which the parameters are supplied in the parameter list. Multi server support: @server = N'mail.server1.com; mail.server2.com; mail.server3.com'. Plan is to support maximum 3 servers, which will be used in order, when one fails, two is used, when two fails, three is used, if three fails the operation is failed. The servers are not used in a round-robin fashion so this is no solution for load balancing. Addition of a retry counter, for retry on failure (plan is to support maximum of 10 retries) (Behavior of @retry in combination with multiple servers is not yet deteremined.) Configurable maximum files size, which is currently limited to 64K, int @messagefile_maxsize overrides the default, when not specified 64K is still used. Registry based default configuration. xp_smtp_config can be used to set and retrieve default values for almost all parameters, like @server, @from, @from_name, @timeout etc. The additional @allow_overrides flags determines the behavior of the default values when tried to be overwritten by the user. False will fail the operation with a "Error: overwriting default parameter (%s)", true will override the default value with the provided value Add an output parameter (@errmsg OUTPUT) which contains the error message in case of a failure to have better control over the execution and enable to XP to work in complete silent mode. The parameter would only contain data if the return code of the XP is not equal to 0 (zero) indicating some sort of failure. Addition of query support for emailing query execution results like xp_sendmail does, where the query result either is attached or is send as the body of the email message. Supports multiple result sets and output to CSV and XML. Query support is added using a different XP name, xp_smtp_sendmail_query to allow security differentiation.
For future release: Query based email, this will allow for table driven email generation. Idea is to create a table or view representing the parameters of xp_smtp_sendmail like this:
create table mailfeed ( FROM NVARCHAR(4000) NOT NULL, FROM_NAME NVARCHAR(4000) NULL, TO NVARCHAR(4000) NOT NULL, CC NVARCHAR(4000) NULL, BCC NVARCHAR(4000) NULL, priority NVARCHAR(10) NULL, subject NVARCHAR(4000) NULL, type NVARCHAR(100) NULL, message NVARCHAR(4000) NULL, messagefile NVARCHAR(4000) NULL, attachment NVARCHAR(4000) NULL, attachments NVARCHAR(4000) NULL, server NVARCHAR(4000) NULL, codepage INT NULL, timeout INT NULL )
The table or view would supply the values for the parameters, the scope of the rows used to send email are determined by the @querymail parameter which contains a query like:
select @querymail = N'select * from mydb.dbo.mailfeed where extrafield = 1'
All columns that do not match names of parameters or are excluded by the query will either get the value supplied to xp_smtp_sendmail or the default value if no value was supplied. Allow attaching open files like the SQL Server ERRORLOG file E-mail address validation only execution. S/MIME support Keep socket connection open between invocations of the XP, to improve execution performance SQL Server 6.x support Windows 9x support Configurable character set and content encoding Other suggestions, ideas, please send email to ideas
Add configurable SMTP port support (instead of hard coded port 25) Added in version 1.1.0.8 Support for text/html MIME encoding besides the current text/plain MIME encoding Added in version 1.1.0.3 Add ability to pass multiple file attachments (adding @attachments parameter) Added in version 1.1.0.3 Add ability to read message text from file, to bypass the XP parameter size limit Added in version 1.1.0.3
| Version | Date | Description | | 1.1.0.8 | 2002-08-12 | Added @port support | | 1.1.0.7 | 2002-07-11 | Adds support for: @ping server, @replyto, display name handling for @TO, @CC and @BCC, improved HTML mail and distinct error messages for each error and @dumpmsg = N'c:\msg.txt' functionality for diagnostics. Fixed problems: varchar(8000) messages size problem and recipients concatenation problems | | 1.1.0.3 | 2002-03-01 | Adds support for HTML mail via the @type = 'text/html' parameter. Adds support for passing multiple attachments via the @attachments parameter. Adds support for passing the message text via a file instead of the @message parameter, by the addition of the @messagefile parameter. | | 1.0.0.2 | 2002-02-20 | Fix for SQL Server 7.0 problem with incorrect linkage to OPENDS60.DLL causing error 182 during execution. This fix resulted in the introduction of version specific binaries: XPSMTP70.DLL and XPSMTP80.DLL. This fix only affects SQL Server 7.0 users, SQL Server 2000 users do not have to upgrade from version 1.0.0.1 | | 1.0.0.1 | 2002-02-14 | First release |
*** |