asp tutorials, asp.net tutorials, sample code, and Microsoft news from 15Seconds
Data Access  |   Troubleshooting  |   Security  |   Performance  |   ADSI  |   Upload  |   Email  |   Control Building  |   Component Building  |   Forms  |   XML  |   Web Services  |   ASP.NET  |   .NET Features  |   .NET 2.0  |   App Development  |   App Architecture  |   IIS  |   Wireless
 
Pioneering Active Server
 Power Search





Active News
15 Seconds Weekly Newsletter
• Complete Coverage
• Site Updates
• Upcoming Features

More Free Newsletters
Reference
News
Articles
Archive
Writers
Code Samples
Components
Tools
FAQ
Feedback
Books
Links
DL Archives
Community
Messageboard
List Servers
Mailing List
WebHosts
Consultants
Tech Jobs
15 Seconds
Home
Site Map
Press
Legal
Privacy Policy
internet.commerce














internet.com
IT
Developer
Internet News
Small Business
Personal Technology
International

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers

HardwareCentral
Compare products, prices, and stores at Hardware Central!

Accessing Outlook 98 Contacts in ASP Pages
By Dennis Adams
Rating: 3.9 out of 5
Rate this article


  • email this article to a colleague
  • suggest an article

    Introduction

    Our company uses an Intranet primarily to enter and track purchase orders. Instead of manually finding and typing in vendor information (name, address, phone number, etc.) we access Outlook 98 Contact Folders directly in our ASP pages.

    Initially we tried to use the Outlook automation component directly in an ASP page (Server.CreateObject) and then use the methods and properties of the component. However, this approach didn’t work because not all of the advertised methods and properties of the object could be made to work (probably because of incompatibilities in the COM interface between ASP pages and the Outlook automation component).

    The approach finally taken was to make the Outlook Contacts Folder part of the Public Folders and then to access the Public Folders via Exchange Server using Collaboration Data Objects (CDOs) (specifically the Messaging Application Programming Interface [MAPI].Session object). This article shows the ASP code used to accomplish this.

    Prerequisites

    I found that the following were prerequisites for this approach to work:

    1. Exchange Server V 5.5 with SP 2, a free, object-oriented toolkit for Standard Generalized Markup Language (SGML) parsing and entity management, is required.
    2. Outlook for Web Applications (OWA) (an Exchange Server 5.5 install option) must be installed on the IIS computer in order to install the CDO DLLs. (See References 5 ,6, and 7.)
    3. OWA must be configured as explained in the Exchange Server documentation located in folder \exchsrvr\docs\web_docs\server\htm\xog18008.htm. (See Reference 4.)
    4. On the IIS computer, disable "Windows NT Challenge Response" and enable "Allow Anonymous Access" and "Basic Authentication." This is necessary because of a documented bug in Exchange Server that will not allow NT Authentication if the IIS and Exchange Server are on different computers. By doing this, when the code attempts to logon to Exchange Server, Exchange Server will bring up a logon dialog box because it will be using Basic Authentication. At this point, make sure to enter your domain logon name (i.e., \\myDomainName\myUserName).
    5. Setup IIS and Exchange Server Permissions as explained in "MS Exhange FAQs from Support Online." (See References 8 and 9.)
    6. Place the Outlook Contacts Folder in the Public Folders Folder.

    The Code

    Visual InterDev is our development tool, so all references to thisPage Object, list boxes, etc., in the code should be taken in this context.

    Our Purchase Order screen has a list box filled with the names of our vendors. The names of the vendors are obtained programically from the Outlook Contacts Folder. Only a subset of our Contacts Folder is used for vendors, and they are identified by entering "Vendor" in the "Profession" entry in the Contacts database.

    The list box is filled with the vendor names using the following code.

    1. When the ASP page is first entered, the browser is forced to use "Basic" authentication in order to help identify the logon user to the Exchange Server. (NT Authentication won’t work if IIS and Exchange Server are on different computers. [See MS documented bug in Reference 8) as shown in lines "auth A" and "auth B."]) This is a key element often missed in most logon attempts, and is explained in more detail in Reference 1. You must also disable "Windows NT Challenge Response" and enable "Allow Anonymous Access" and "Basic Authentication" on the IIS Web site security settings.
      
      Sub thisPage_onenter()
      
      Dim bstrAT, oSession,oInbox,oMessages
      Dim oRenderApp,oRenderer, myUser
      Dim objSession
      Dim objMessages
      Dim objOneMessage
      Dim objInfoStores
      Dim objInfoStore
      Dim objTopFolder
      Dim objFolders
      Dim objFolder
      Dim objSubFolder
      Dim objTargetFolder
      Dim strProfileInfo
      Dim i
      Dim bstrPublicRootID
      Dim FieldsCollection, myField,strSQL
      
      On Error Resume Next 'Are going to test for errors
      
      If(thisPage.firstEntered) Then
      
      	'user logs on to IIS as IUSR_machine (if IIS anonymous login is enabled in IIS). 
      	‘However because of Exchange Server’s security
      	'reasons, this account will not be allowed to log onto Exchange Server. Therefore we
      	'must add NT Challenge or Basic to the HTTP header to force the logon as the
      	'NT Challenge/Response Or Basic in order for the Exchange Server login to work.  This
      	'code should be added to every routine on every ASP page that logs onto Exchange
      	'sever in case the session times out.
      	'NOTE 1: The only way I could get to logon to Exchange Server successfully was to make
      	'the IIS 'logon be IIS Anonymous and Basic logon and to DISABLE
      	'NT Challenge/Response (because of an Exchange Server bug)
      
      	'Get the IIS Authorization type
      	bstrAT = Request.ServerVariables("AUTH_TYPE")
      
      	'Force BASIC authentication as Exchange Server Requires to successfully logon to it
      	if InStr(1,"_BasicNTLM", bstrAT,vbTextCompare) < 2 Then
      			Response.Buffer = TRUE 'buffer until page is complete
      
      		'tell browser user is not authorized and for browser to challenge for the
      		'user credentials (i.e., his NT account)
      		Response.Status = ("401 Unauthorized")	
      		Response.AddHeader "WWW.Authenticate", "Basic"
      		Response.End
      	End If
      
      
      
    2. The MAPI Session object is created and Exchange Server is logged onto.
      
      'Create the MAPI Session Object
      set objSession = Server.CreateObject("MAPI.Session")
      		
      'Logon to Exchange server, specify which server and mailbox
      err.clear 'we are going to test for errors so clear 1st
      
      'Create the logon string
      strProfileInfo = "myExchangeServerName" & vbLF & "myValidExdhangeMailboxName"
      
      'Try to logon to Exchange Server
      objSession.Logon "", "", False,True,0,True,strProfileInfo
      
      'Verify login (still may not have correct permissions even if logon worked)
      myUser = objSession.CurrentUser
      'Response.Write("<br>DEBUG: Exchange Logon User = " & myUSer)
      
      'See if logon was successful
      if err.number = 0 And myUser <> "Unknown" Then
      
      
      
    3. The Exchange Server Public Folder Collection is then obtained. (See Reference 2.)
      
      	'Get the info stores collection
      	Set objInfoStores = objSession.InfoStores
      
      	'Get the Public Folders Info Store
      	Dim myFoundPulic
      	myFoundPublic = false
      
      	For i = 1 To objInfoStores.Count
      
      		If objInfoStores.Item(i)= "Public Folders" Then
      			Set objInfoStore=objInfoStores.Item(i)
      			'Response.Write("<br>__DEBUG: Found 'Public Folders' InfoStore OK")
      			myFoundPublic = true
      			Exit For 'found it
      		End If
      	Next
       
      	if myFoundPublic = true Then
      
      		'Get the Folders Root
      		'H66310102 is the value for Public Folders ID (see Technet)
      
      		bstrPublicRootID = objInfoStore.Fields.Item( &H66310102 ).Value 
      		Set objTopFolder = objSession.GetFolder(bstrPublicRootID, _
      		   objInfoStore.ID)
      
      		'Get the Public Folders Collection
      		Set objFolders = objTopFolder.Folders
      
      
      
    4. The Contacts Folder within the Public Folders is then found (simply identified by its Contacts folder name).
      
      		'Find the Public Folder we’re looking for (Outlook Contacts)
      		Set objFolder = objFolders.GetFirst()
      
      		Dim test,j
      		test = objFolder.Name
      		'Response.Write("<br>DEBUG: Public Folder Name = " & test)
      
      		'init
      		j=0 
      
      		Do Until test = "myPublicFolderNameConsistingOfContacts"
      			Set objFolder=objFolders.GetNext()
      			test = objFolder.Name
      			'Response.Write("<br>DEBUG: Public Folder Name = " & test)
      			j= j+1
      			if j>100 then 
      				Exit Do 'Avoid infinite loop
      			End if
      		Loop
      
      		if test = " myPublicFolderNameConsistingOfContacts" Then
      
      
      
    5. The individual contacts are then obtained and processed. The vendor names are stored temporarily into an SQL database for later sorting.
      
      			'Get the Contacts Collection
      			Set objMessages = objFolder.Messages
      			'Response.Write("DEBUG:objMessages.Count = " _
      			'& objMessages.Count & "<br>")
      
      			'Fill the vendor list box with Exchange Server Public
      			'Folder Contact Data. Since it
      			'is not alphabetical when getting from Exchange server,
      			'we will temporarily store it in an SQL db table and then retrieve with 
      			'ORDER BY ASC clause
      			'store the contact data temporality in a SQL db table
      
      			'delete the current Unalphabetical Contacts SQL db data
      			Dim DeleteRecordset
      			set DeleteRecordset=CreateObject("ADODB.Recordset")
      			strSQL = "DELETE FROM tempContacts"
      			DeleteRecordset.Open strSQL,"DSN=MyDSN;UID=sa"
      			'Get ready to fill it with current unalphabetized Contact Data
      			Dim InsertRecordset
      			set InsertRecordset=CreateObject("ADODB.Recordset")
      			Dim myContactCo,myProfession
      
      			'Look at each Contact 
      			For Each objOneMessage in objMessages
      			
      				'Get the fields from this Contact
      				Set FieldsCollection = objOneMessage.Fields
      						
      				'Get the Company name and profession for each contact
      				'See cdo.hlp for &H codes
      				myContactCo = FieldsCollection.Item(&H3A16001E)
      				myProfession = FieldsCollection.Item(&H3A46001E)
      					if myProfession = "Vendor" Then
      
      					'Replace all with spaces for INSERT to work
      					myContactCo = Replace(myContactCo,"'"," ")
      
      				'put into temp SQL db
      				strSQL = "INSERT INTO tempContacts" &_
      					" VALUES_ ('" & myContactCo & "')"
      					InsertRecordset.Open strSQL,"DSN=MyDSN;UID=sa" 
      				End if
      				myProfession = "" 'reset
      				myContactCo = ""
      			Next
      
      
      
    6. The vendor names are retrieved, sorted, and placed into the vendor name list box.
      
      					'Now retrieve the data alphabetically and put into Drop list
      				Dim ContactsRecordset
      set ContactsRecordset=CreateObject("ADODB.Recordset")
      strSQL = "Select * from tempContacts  ORDER BY _
      CompanyName ASC"
      ContactsRecordset.Open strSQL,"DSN=MyDSN;UID=sa"
      ContactsRecordset.MoveFirst 
      					lstVendors.clear 'clear current drop list
      					lstVendors.addItem("") 'force a user selection
      					Do While (NOT ContactsRecordset.EOF)
      
      						'Get 1st and only field value of the field 
      'COLLECTION in the DropList Table
      	myField = ContactsRecordset.Fields("CompanyName")		lstVendors.addItem(myField)
      	ContactsRecordset.MoveNext
      				Loop
      
      
      
    7. Cleanup is then performed.
      
      				set ContactsRecordset = nothing
      					set InsertRecordset = nothing
      					set DeleteRecordset = nothing
      				Else
      					Response.Write("<br>ERROR getting " &_
      					"myValidExdhangeMailboxName_ Folder From Public " &_
      					"Folders On Exchange Server...Vendor Info_ will " &_
      					"not be available<br>")
      				End If
      			Else
      				Response.Write("<br>ERROR getting Public Folders_
      					OnExchangeServer<br>")
      			End If
      		Else
      
      			Response.Write("<p>ERROR logging onto Exchange Server...Vendor Info will_
      			not be available<br>")
      			bstrHTTPUser = Request.ServerVariables("AUTH_USER")
      			Response.Write("<br>AUTH_USER = " & bstrHTTPUser)
      			bstrHTTPPaswrd = Request.ServerVariables("AUTH_PASSWORD")
      			Response.Write("<br>AUTH_PASSWORD = " & bstrHTTPPaswrd)
      			bstrAT = Request.ServerVariables("AUTH_TYPE")
      			Response.Write("<br>AUTH_TYPE = " & bstrAT)
      		End If
      		objSession.Logoff
      		Set objOneMessage = Nothing
      		Set objMessages = Nothing
      		Set objFolder = Nothing
      		Set objTopFolder = Nothing
      	Set objSession = Nothing
      	End If
      End Sub
      
      
      
    8. Once the vendor name list box is filled in, the user can select a vendor to get their address, phone number, etc., from the Outlook Contacts Folder. The preceding code is essentially duplicated in order to logon to the Exchange server again and get the data (in case of timeouts).
      
      Sub lstVendors_onchange()
      
      Dim bstrAT, oSession,oInbox,oMessages
      Dim oRenderApp,oRenderer,  myUser
      	Dim objSession
      	Dim objMessages
      	Dim objOneMessage
      	Dim objInfoStores
      	Dim objInfoStore
      	Dim objTopFolder
      	Dim objFolders
      	Dim objFolder
      	Dim objSubFolder
      	Dim objTargetFolder
      	Dim strProfileInfo
      	Dim i
      	Dim bstrPublicRootID
      	Dim FieldsCollection, myField,strSQL
      	
      	On Error Resume Next
      
      	'Get selected list box value
      	mySelectedCo = lstVendors.getText()
      
      	'Find this co. in Contacts Db in order to get address, etc.
      
      	'Make sure Browser is authenticated, or else you can't log on to Exchange server
      	bstrAT = Request.ServerVariables("AUTH_TYPE")
      	if InStr(1,"_BasicNTLM", bstrAT,vbTextCompare) < 2 Then
      		Response.Buffer = TRUE
      		Response.Status = ("401 Unauthorized")
      		Response.AddHeader "WWW.Authenticate", "NTLM"
      		Response.End
      	End If
      	set objSession = Server.CreateObject("MAPI.Session")
      	
      	On Error Resume Next
      
      	'Logon to Exchange server again (in case timed out), specify which server and mailbox
      	strProfileInfo = "myExchangeServerName" & vbLF & myValidExdhangeMailboxName)	
      	err.clear
      
      	'try to logon
      	objSession.Logon "", "", False,True,0,True,strProfileInfo
      
      	'Verify login (still may not have correct permissions even if this works)
      	myUser = objSession.CurrentUser
      	'Response.Write("<br>DEBUG: Exchange Logon User = " & myUSer)
      
      	'See if successful
      	if err.number = 0 Then
      		Set objInfoStores = objSession.InfoStores
       
      		Dim myFoundPulic
      		myFoundPublic = false
      		For i = 1 To objInfoStores.Count
      			If objInfoStores.Item(i)= "Public Folders" Then 'look at Public folders
      				Set objInfoStore=objInfoStores.Item(i)
      				myFoundPublic = true
      				Exit For 'found it
      			End If
      		Next
      
      		if myFoundPublic = true Then
      
      			'H66310102 is for Public Folders ID
      			bstrPublicRootID = objInfoStore.Fields.Item( &H66310102 ).Value	
      			Set objTopFolder = objSession.GetFolder(bstrPublicRootID, _
      			   objInfoStore.ID)
      			Set objFolders = objTopFolder.Folders
      			Set objFolder = objFolders.GetFirst()
      			Dim test,j
      			test = objFolder.Name
      			j=0 'init
      			Do Until test = " myPublicFolderNameConsistingOfContacts "
      				Set objFolder=objFolders.GetNext()
      				test = objFolder.Name
      				j= j+1
      				if j>100 then 
      					Exit Do 'avoid infinite loop
      				End if 
      			Loop
      			if test = " myPublicFolderNameConsistingOfContacts " Then
      
      				Set objMessages = objFolder.Messages
      				
      				'Find the desired Co in the Exchange data
      				Dim myContactCo, myFoundIt 
      				myFoundIt = false
      				For Each objOneMessage in objMessages
      					Set FieldsCollection = objOneMessage.Fields
      					myContactCo = FieldsCollection.Item(&H3A16001E)
      					myContactCo = Replace(myContactCo,"'"," ")
      					if myContactCo = mySelectedCo Then
      						myFoundIt = true
      						Exit For
      					End if
      				Next
      
      				If myFoundIt = true Then
      
      
      
    9. Individual Contact Addresses, etc., are then using the &H Property Tags from Reference 3.
      
      				'See cdo.hlp for &H codes
      
      				'Get the Street
      				myContactStr = FieldsCollection.Item(&H3A29001E)
      
      				'Get the city
      				myContactCity = FieldsCollection.Item(&H3A27001E)
      
      				'Get the state
      				myContactSt = FieldsCollection.Item(&H3A28001E)
      
      				'Get the zip code
      				myContactZip = FieldsCollection.Item(&H3A2A001E)
      
      				'Get the phone number
      				myContactPh = FieldsCollection.Item(&H3A08001E)
      
      				'Get the fax number
      				myContactFax = FieldsCollection.Item(&H3A24001E)
      
      				'Get out Customer Id
      				myContactID = FieldsCollection.Item(&H3A4A001E)
      				'NOTE: Can't find the E-mail addr in Exchange (MS bug!!??)
      				'therefore get it from our own maintainable VendorEmail Table
      				myContactEmail = "Unknown"    'init
      				VendorEmailRecordset.close
      				VendorEmailRecordset.open
      				myRecordCount = VendorEmailRecordset.getCount()
      				Count=myRecordCount
      				If (VendorEmailRecordset.getCount() > 0) Then
      					VendorEmailRecordset.moveLast
      					Do While(VendorEmailRecordset.BOF <> true)
      						if(VendorEmailRecordset.fields.getValue_
      							("CompanyName") = myContactCo) Then
      
      							myContactEmail =_ VendorEmailRecordset.fields.getValue_
      								("EmailAddr")
      							exit Do
      						End If
      						VendorEmailRecordset.movePrevious
      						Count=Count-1
      					Loop
      				End If
      
      				'Fill in the Text Boxes with the data
      				txtVendorName.value = myContactCo
      				txtVendorStreet.value  = myContactStr
      				txtVendorCity.value  = myContactCity
      				txtVendorState.value = myContactSt
      				txtVendorZip.value = myContactZip
      				txtVendorPhone.value = myContactPh
      				txtVendorFax.value = myContactFax
      			Else
      				Response.Write("Can't find selected " &_
      					"company in Exchange_ " &_
      					"Contacts Folder. Please manually fill in " &_
      					"Vendor Address_ data.")
      			End If
      		Else
      			Response.Write("<br>ERROR getting I.T.S Department " &_
      					"Contacts Folder_ From Public Folders " &_
      					" On Exchange " &_
      					Server...Vendor Info will not be_ " &_
      					"available<br>")
      		End If
      	Else
      		Response.Write("<br>ERROR getting Public Folders On Exchange Server... _
      			Vendor Info will not be available<br>")
      	End If
      Else
      	Response.Write("<br>ERROR logging onto Exchange Server...Vendor Info will not_
      	be available<br>")
      End If
      
      objSession.Logoff
      Set objOneMessage = Nothing
      Set objMessages = Nothing
      Set objFolder = Nothing
      Set objTopFolder = Nothing
      Set objSession = Nothing
      End Sub
      
      
      

      Summary

      Accessing Outlook 98 Contacts (via a Public Folder) from ASP pages is possible if care is taken to properly install the required components, configure the IIS and Exchange Server computers, locate appropriate Technet articles and Exchange Server documentation, and provide code to work around MS bugs.

      References

      1. Building Collaborative Web Applications with Microsoft Exchange Server
        http://www.asptoday.com/articles/19990429.htm
      2. How to View Public Folder Contents from an ASP Page – Technet Article Q178552
      3. MAPI Property Tags from CDO documentation located at \\myExchangeServer\exchsrvr\bin\cdo.hlp.
      4. OWA configuration as explained in the Exchange Server documentation located in folder \exchsrvr\docs\web_docs\server\htm\xog18008.htm
      5. What’s the Difference between CDO and CDONTS? – Technet Article Q177850
      6. Problems with CDO after Upgrading to Outlook 98 – Technet Article Q194077
      7. INFO: Where to Acquire the Collaboration Data Objects Libraries – Technet Article Q171440
      8. PRB: Accessing Public Folders via a Web Browser Causes Error – Technet Article Q168661
      9. XSEB: VBScript Error ‘800a03a3’ When Accessing OWA Server 5.5 – MS Exchange FAQs from MS Support Online.

      About The Author

      Dennis Adams is an independent software contractor currently specializing in the MS Visual Studio language suite. He is a Microsoft Certified Professional in MS Visual C++ and is studying to be a Microsoft Certified Solution Provider (MCSP). He can be reached at adamsde1@aol.com and dennisa@ntbtrk.com.

  • Rate This Article
    Not HelpfulMost Helpful
    1 2 3 4 5
    Supporting Products/Tools
    AspEmail
    Free SMTP component that supports multiple file attachments, unlimited recipients, CC's, BCC's and REPLY-TO's. Sends messages as plain text or in the HTML format. Premium features include message queuing and deferred processing for high mail volumes. When used with AspEncrypt, generates S/MIME-enabled secure mail.
    [Top]
    AspMail
    AspMail supports multiple file attachments (MIME and UUE), US ASCII and ISO-8859-1 character sets, 8bit subject lines, custom message content headers, custom message headers, MS Exchange priority headers, PGP and more.
    [Top]
    DevMailer 1.0
    DevMailer adds SMTP email sending abilities to ASP or Perl programs. Features include: attachments, failsafe queueing, redundant servers, standard message file support, and advanced activity logging. Also verify email addresses and send multiple messages on a single connection.
    [Top]
    JangoMail
    JangoMail, located at JangoMail.com, is a web-based service that sends mass e-mails by connecting to data from your SQL Server or ODBC compliant database. Unlike traditional ASP e-mail components, the JangoMail service can also handle unsubscribes and bounces automatically and synchronize these with your original web database. The only setup that is required is the placement of one ASP file on your web server. Other features include message open tracking and click tracking.
    [Top]
    JMail
    Send Email directly from you web page via your webserver. jMail will not start up any annoying email clients, just smoothly send the mail via the mailserver. Implement it with easy ASP code.
    [Top]
    Mail for .NET
    Mail for .NET is the first product for the NetToolworks.NET framework. Together they provide methods that send, receive, compose, edit, encode and decode e-mail messages. SMTP, POP, complex MIME messages, HTML messages, and file/memory streaming are also supported.
    [Top]
    OCXMail
    A single component that is limited in scope to five methods. The OCXMail ASP component allows you to send mail using the standard SMTP protocol from any program that can use ActiveX/OLE components.
    [Top]
    ocxQMail
    The ocxQmail ASP component allows you to send mail using the standard SMTP protocol from any program that can use ActiveX/OLE components. ocxQmail queues up messages for batch delivery by a companion NT Service at intervals you specify in the Administration Windows GUI. Your ASP pages do not have to wait for the mail message to be physically sent before continuing.
    [Top]
    RobustPop3
    RobustPOP3 component allows you to retrieve mail using POP3 protocol. Features include: Retrieve Messages Multiple File Attachments, File Attachments support MIME and UUEncode.
    [Top]
    SA-SmtpMail
    A full-featured SMTP e-mail client component that allows developers to send e-mail from any client. This award-winning control offers significantly better performance than other popular SMTP components. SoftArtisans SMTPmail is written in high-performance C++ and supports all threading models, file attachments and multiple encoding schemes. New features in version 2.0 include login authentication and mass mail. The new version also supports PGP encryption.
    [Top]
    SimpleMail
    Simple mail strictly conforms to the original SMTP standard. It does not support enhanced features like attachments, MIME or multiple character sets. However, it offers high performance, ease of use and a very competitive low price.
    [Top]
    WebMail
    Chilkat WebMail is a POP3/SMTP client component packed with advanced features including: full S/MIME capability, MHTML, multipart/alternative, multipart/related, attachments, advanced AES encryption, charset conversion, Outlook integration, progress monitoring, import EML, import/export XML, mail-merge, distribution lists, Chilkat Zip integration, Outlook contacts and distribution lists, bad email address detection/collection, SMTP Windows Integrated Authorization, smart cards, SMTP/POP3 server diagnostics, full control over Cryptographic Service Providers for S/MIME, auto-handle any charset for any language, and more.
    [Top]
    Other Articles
    Jul 14, 2003 - Creating Efficient Mail Processing Systems - Part 2
    Learn how to run the mail processing component from the first part using Transaction Services provided by COM+ Enterprise Services and see how to use the information available in the SQL Server table to actually send out mail from a Windows Service.
    [Read This Article]  [Top]
    Jul 8, 2003 - Creating Efficient Mail Processing Systems – Part 1
    Many challenges present themselves when trying to send mail as part of a transaction in an enterprise-class application. Fear not frustrated developer. Thiru Thangarathinam will guide you through the steps of designing an extensible and asynchronous mail processing system.
    [Read This Article]  [Top]
    Feb 3, 2003 - Validating E-mail Against the Mail Server
    Calvin Luttrell takes e-mail validation to another level by building a .NET Web service that validates a user's e-mail address against the user's e-mail mail server.
    [Read This Article]  [Top]
    Dec 20, 2002 - Building a .NET E-mail Application - Part 1
    Remie Bolte begins his series on developing .NET SMTP and POP3 e-mail components for an outlook express look-alike Web-based e-mail application. This article provides a thorough overview of the SMTP RFC.
    [Read This Article]  [Top]
    Oct 16, 2001 - Implementing an E-mail Content Filter Using CDO
    Stop SPAM from sliding through your e-mail system. George Walker shows how to create an e-mail content filter for the Windows 2000 SMTP service using Microsoft Collaboration Data Objects.
    [Read This Article]  [Top]
    Oct 2, 2001 - Creating PGP-Encrypted E-Mails
    PGP is an encryption program being used for secure transmission of files and e-mails. This article explains the concepts of PGP, provides details about installing and configuring the command-line version of PGP, and explains how an encrypted e-mail can be generated from ASP.
    [Read This Article]  [Top]
    Dec 17, 1999 - How to Send Secure Mail in ASP-Based E-Commerce Applications
    Peter Persits' article explains how Secure Multipurpose Internet Mail Extensions, or S/MIME, has come to rescue of e-commerce Web sites that need some order information to be contained in encrypted E-mail. Customers don't want to use automatic on-line credit card authorization, so order information instead is sent over an SSL-protected HTML form and credit card numbers are sent via encrypted E-mail for manual processing.
    [Read This Article]  [Top]
    Oct 7, 1999 - Using the WSH on the Desktop
    In this article Shahriar Moosavizadeh uses a script to report each day's sales data via E-mail to the sales manager. The Windows Scripting Host allows scripts to be executed directly on the desktop and create a report without having to run the script within the HTML document or ASP page. Included is a sample script that both builds the report and E-mails it to the sales manager, and step-by-step screenshots and instructions.
    [Read This Article]  [Top]
    Mar 25, 1998 - Collaboration Data Object and IIS 4.0
    Collaboration Data Object (CDO) is a COM library designed to send mail through SMTP or Microsoft Exchange. If you install the SMTP server that comes with Microsoft Option Pack 4, you can send mail from an Active Server page using CDO. Because CDO is comes with Microsoft Option Pack 4, CDO is free.
    [Read This Article]  [Top]
    Apr 6, 1997 - Creating a List Server with ASP
    This issue describes how to make a list server using Active Server, SQL Server, and Stephen Genusa's ASPMail Component. Included are source and instructions for adding the user to the list from a Active Server page, removing the user from the list via a Active Server page, and sending mail to the whole list.
    [Read This Article]  [Top]
    Mailing List
    Want to receive email when the next article is published? Just Click Here to sign up.

    Support the Active Server Industry



    JupiterOnlineMedia

    internet.comearthweb.comDevx.commediabistro.comGraphics.com

    Search:

    Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

    Jupitermedia Corporate Info


    Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

    Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers