In order for the SharePoint Portal Server COM Add-In to function correctly, your SharePoint Portal Server workspace coordinator should assign you the author role or higher.
To add attachments to a Document folder
1. Open the message containing the attachments you want to publish.
3. Enter the URL of a SharePoint Portal Server Documents folder in the Folder URL edit box. The next time you publish attachments, the COM Add-in will remember the URL for the folder.
4. Select one or more attachments in the Attachments list box. Use Ctrl+Click to select multiple attachments if necessary.
5. Check the Prompt For Document Properties box if you want to be prompted for document properties such as Title, Author, Keywords, and Description.
6. Check the Reply With Publication Results if you want to send a reply message to the sender informing him or her of publication results.
8. If you elected to complete the Document Properties dialog box, enter Document Properties and click OK.
9. If you elected to reply with publication results, type a message If required and click Send. SharePoint Portal Server COM Add-In Code
The code for the SharePoint Portal Server COM Add-In Is straightforward. When the Newlnspector event fires, a Mallltem object Is Instantiated. Because this Mallltem object (named objMailltem ) Is declared using the WithEvents keyword In the declarations of the OutAddln class, you can trap Item-level events on objMailltem. In this case, the Important Item-level event Is the Open event. In the Open event, the Publish Attachments menu Item Is added to the File menu as follows:
Private Sub objMailltem_Open(Cancel As Boolean) Dim cbFile As Office.CommandBar
Set cbFile = objMailltem.Getlnspector.CommandBars.ltem("File") On Error Resume Next
Set cbbSPPS = cbFile.FindControl(Tag:="SPPS Publish Attachments") If cbbSPPS Is Nothing Then Set cbbSPPS = _ cbFile.Controls.Add(Type:=msoControlButton, _ Parameter:="SPPS Publish Attachments", Before:=7, Temporary:=True) With cbbSPPS
.Parameter = "SPPS Publish Attachments" .Faceld = 258
.Style = msoButtonlconAndCaption .Caption = "Publish Attachments..." .Tag = "SPPS Publish Attachments" .BeginGroup = False End With End If
If objMailltem.Attachments.Count = 0 Then cbbSPPS.Visible = False Else cbbSPPS.Visible = True End If End Sub
When the Close event for objMailltem fires, the Publish Attachments command bar control Is removed from the File menu. Here's the code:
Private Sub objMailltem_Close(Cancel As Boolean) On Error Resume Next Dim cbFile As Office.CommandBar Set cbFile = objMailltem.Getlnspector.CommandBars.ltem("File") Set cbbSPPS = cbFile.FindControl(Tag:="SPPS Publish Attachments") cbbSPPS.Delete End Sub
That's all there Is to the code In the OutAddln class of the COM Add-In. The other Important code Is contained In the frmPubllsh form. When this form loads, the Initialize event fires. The Initialize event for a UserForm Is equivalent to the Load event for a Visual Basic form. The Initialize procedure checks for registry values that supply a folder URL and determine whether the Prompt For Document Properties and Reply With Publication Results boxes are checked. The procedure then uses the Attachments collection to populate the Attachments list box.
Private Sub UserForm_lnitialize()
Dim i, intCount As Integer
Dim strURLAs String
Dim blnPrompt, blnResults As Boolean
On Error Resume Next strURL = _
GetKeyValueEx(HKEY_CURRENT_USER, gstrRegKey, "URL") If strURL <> "" Then txtURL = strURL blnPrompt = _
GetKeyValueEx(HKEY_CURRENT_USER, gstrRegKey, "Prompt") If blnPrompt Then chkPrompt.Value = True Else chkPrompt.Value = False End If blnResults = _
GetKeyValueEx(HKEY_CURRENT_USER, gstrRegKey, "Results") If blnResults Then chkResults.Value = True Else chkResults.Value = False End If End If
'objltem is declared as a form-level variable Set objltem = golApp.Activelnspector.Currentltem intCount = objltem.Attachments.Count For i = 1 To intCount
If objltem.Attachments.ltem(i).Type = olByValue Then IstAttachments.Addltem _ objltem.Attachments. Item(i). Display Name End If Next End Sub
After the form has been loaded, the code behind the cmdOK button does the actual work of publishing documents to SharePoint Portal Server. This code derives from the PublishSharePoiritDocumerit method in the Outlook Shared Activities Add-in discussed earlier. The IstAttachments ActiveX control supports a selected property that lets you determine whether the attachment has been selected for publication. Once the publication is complete, a reply message is prepared for the sender of the original message. This message informs the sender of the URLs for the published documents on SharePoint Portal Server. Notice that you must use the Replace function to convert the SharePoint URL to a canonical URL in order for the URL to work correctly in the body of the reply message. Canonical URLs do not contain spaces. The code for cmdOK is shown here:
Private Sub cmdOK_Click()
Dim oFolder As New PKMCDO.KnowledgeFolder
Dim oDoc As PKMCDO.KnowledgeDocument
Dim oStream As ADODB.Stream
Dim strPath, strURL, strDisplayName, strMsg, strError As String Dim i As Integer On Error Resume Next If txtURL = "" Then MsgBox "You must supply a URL to SPPS folder.", vblnformation Exit Sub End If
On Error Resume Next oFolder.DataSource.Open txtURL If Err Then
MsgBox "Could not open the URL:" & vbCrLf & txtURL, vbCritical txtURL.SelStart = 0 txtURL. SelLength = Len(txtURL) txtURL.SetFocus Exit Sub Else 'Hide this form Me.Hide frm Wait.Show Do Events
'Persist settings to registry SetKeyValue HKEY_CURRENT_USER, _
gstrRegKey, "URL", txtURL, REG_SZ SetKeyValue HKEY_CURRENT_USER, _
gstrRegKey, "Prompt", Abs(chkPrompt.Value), REG_DW0RD SetKeyValue HKEY_CURRENT_USER, _
gstrRegKey, "Results", Abs(chkResults.Value), REG_DW0RD 'Create message for Post Item strMsg = vbCrLf & vbCrLf & _
"—SharePoint Portal Server Publication Results-----" & _
vbCrLf & "Source Message:" & objltem.Subject & vbCrLf & _ "Received:" & objltem.ReceivedTime & vbCrLf & vbCrLf & _ "Document Title/URL:" & vbCrLf & vbCrLf End If
'Iterate over attachments For i = 1 To IstAttachments.ListCount 'Only publish selected items If lstAttachments.Selected(i -1) = True Then strDisplayName = objltem.Attachments.ltem(i).DisplayName strPath = GetTempDir& objltem.Attachments.ltem(i).FileName objltem.Attachments.ltem(i).SaveAsFile strPath Set oDoc = New PKMCDO.KnowledgeDocument 'Open binary stream Set oStream = oDoc.OpenStream oStream.Type = adTypeBinary oStream.SetEOS
'Load the attachment from the temp folder oStream.LoadFromFile strPath oStream.Flush
Set oStream = Nothing
'Delete the attachment from temp folder
Kill strPath strURL = txtURL & "/" & strDisplayName 'Save to URL
If chkAuthenticateAs = True Then oDoc.DataSource.SaveTo _ SourceURL:=strURL, _ Username:=txtUserName, _ Password:=txtPassword
Else oDoc.DataSource.SaveTo (strURL) End If
'Check for errors If Err = 0 Then
If chkPrompt.Value = True Then With frm Properties
.Caption = strDisplayName & " Properties" .txtAuthor = oDoc.Author .txt Title = oDoc.Title
.txtKeywords = GetKeywords(oDoc.Keywords) .txtDescription = oDoc.Description .Show 1 Do Events End Wth
'If True, set oDoc properties If blnProperties Then oDoc.Author = frmProperties.txtAuthor oDoc.Title = frmProperties.txtTitle If frmProperties.txtKeywords <> "" Then 'Changes txtKeywords into array o Doc. Keywords = _ SetKeywords(frmProperties.txtKeywords) End If oDoc.Description = frmProperties.txtDescription oDoc.DataSource.Save End If
Unload frmProperties Do Events End If strMsg = strMsg & oDoc.Title & vbCrLf_ & Replace(oDoc.DataSource.SourceURL,"", "%20")_ & vbCrLf& vbCrLf
Else 'Error occurred strError = strError & strDisplayName & vbCrLf _ & Replace(strURL,"", "%20") & vbCrLf_ & "Error Number:" & Err.Number & vbCrLf _ & "Error Description:" & Err.Description _ & vbCrLf & vbCrLf End If
'Checkin and publish
Dim oVersion As New PKMCDO.KnowledgeVersion oVersion.Checkin strURL oVersion.Publish strURL Set oVersion = Nothing Set oDoc = Nothing End If Next
If chkResults = True Then If strError <> "" Then strMsg = strMsg & strError End If
'Create a reply message Set objMsg = objltem.Reply objMsg. Body Format = olFormatRichText objMsg. Body = strMsg objMsg. Display End If
Unload frmWait Unload Me End Sub
SharePoint Portal Server offers a wealth of development opportunities on its own or in conjunction with Office XP applications such as Outlook 2002. The Web Storage System provides a solid platform for building collaborative applications. It's up to developers like you to create outstanding solutions for the SharePoint Portal Server platform. Unlike development on the Exchange 2000 Server platform-which uses server-based technologies such as Web Storage System forms (SP1 or later), event sinks, and the Exchange 2000 workflow engine-SharePoint Portal Server development occurs on both the client and the server. PKMCDO operates as an object library on both client and server computers. Use the version of the SharePoint Portal Server SDK supplied on the companion CD to broaden your knowledge of the PKMCDO Object Model and the best practices for SharePoint Portal Server development. Based upon what you now know about Outlook 2002 and SharePoint Portal Server, you can begin to evaluate integrated Outlook and SharePoint Portal Server solutions for your own organization.
Where to Go from Here
Many resources can help you deepen your understanding of the material in this chapter. I'll list some of the most helpful ones
Microsoft Knowledge Base Articles Microsoft Knowledge Base articles are available on the Web at
http://support.microsoft.com/support. Also see "Using Outlook with SharePoint Portal Server (Chapter 16) KB Articles" in the
Microsoft Web Sites folder under the Help And Web Sites folder on the companion CD.
• See the item entitled "SharePoint Portal Server Technical Articles" in the Help folder under the Help And Web Sites folder on the companion CD.
• The SharePoint Portal Server SDK is available at http://www.microsoft.com/sharepoint/downloads/tools/SDK.asp.
• See the white paper, "SharePoint Portal Server as a Collaborative Solution Platform," at http://msdn.microsoft.com/librarv/default. asp? URL=/librarv/techart/Tahoe. htm.
• See the "Web Storage System Schema Usage and Best Practice Guide" at http://msdn.microsoft.com/librarv/default. asp? URL=/librarv/techart/Wssschemause. htm.
Books on Web Storage System Development
Gomez, Alex; Jamison, Scott; Wesolowski, George. Developing Applications with Exchange 2000: A Programmer's Guide. Boston, MA: Addison Wesley, 2001.
Martin, Mindy. Programming Collaborative Web Applications with Microsoft Exchange 2000 Server. Redmond, WA: Microsoft Press, 2000.
Rizzo, Thomas. Programming Microsoft Outlook and Microsoft Exchange, Second Edition. Redmond, WA: Microsoft Press, 2000.
A veteran developer for Microsoft Outlook, Randy Byrne is the President and CEO of Micro Eye, Inc., a Microsoft Certified Partner specializing in collaborative application development using Microsoft Exchange and Outlook. As a Microsoft Most Valued Professional (MVP) for Outlook, he has extensive experience with the concerns of the Outlook development community. He received his Bachelor's degree from Yale University and a graduate degree from the University of California at Berkeley. A resolute fan of the Outlook Object Model, he contributes regularly to Exchange and Outlook magazine. He is a speaker at numerous industry conferences, including Microsoft TechEd, the Microsoft Exchange Conference, and the Exchange/Outlook Developer's Summit. Micro Eye, Inc., is located in the Sacramento area of Northern California.
Every effort has been made to ensure that the text of this eBook matches the text of the paper version as closely as possible. For usability reasons, formatting changes may have been made to the eBook version.
We need to hear from you regarding your experience with our eBooks. Tell us what you like, don't like; which features you use, and which features you would like to see in future versions of our eBooks. Send your comments to [email protected]. Please note that technical support is not offered through this alias.
Create a List of Favorite Topics
1. Locate the topic you want to make a favorite topic.
2. Click the Favorites tab, and then click Add.
To return to a favorite topic, click the Favorites tab, select the topic, and then clickDisplay. If you want to rename a topic, select the topic, and then type a new name in the Current topic
To remove a favorite topic, select the topic and then click Remove.
This eBook may contain links to Web sites. All hyperlinks within the text were valid at the time this eBook was published. Due to the nature of the World Wide Web, we cannot guarantee that all links to Web sites are still valid after the release date of the eBook
Many of the graphics shown in this book are quite large. To improve the readability of the electronic version, reduced versions of these graphics are shown in the text. To see a full-size version, click on the reduced graphic.
Use Accessibility Shortcut Keys
The following keyboard shortcuts can be used for navigation.
For more information about accessibility features and services, visit the Microsoft Accessibility Web site. For the Library:
Close the eBook.
Switch between the eBook and other open windows.
Print a topic.
Right-click in the Topic pane.
Move back to the previous topic.
Move forward to the next topic (provided you have viewed it just previously).
Refresh the topic that appears in the Topic pane (this is useful if you have linked to a Web page).
Was this article helpful?