Can I distribute the Simple Mail Transfer Protocol (SMTP) addresses in the Global Address List (GAL) to my users who access their Exchange Server mailboxes via a Post Office Protocol 3 (POP3) client on slow dial-up links?
Although Exchange Server lets you publish the GAL to Internet users with the Lightweight Directory Access Protocol (LDAP), some users find that doing an LDAP lookup for every message to people in their organization is not very efficient. Some Exchange administrators, therefore, want to distribute the GAL in a way that lets remote POP3 users add it to the address lists available in their email client. Exporting the GAL to a comma-delimited text file is a good choice, because many email clients can import that format, and the Microsoft Exchange Administrator program can handle that format.
To limit the size of the file, export only certain GAL fields. The Microsoft BackOffice Resource Kit (BORK) includes an Import Header tool to help you create a header file that you can use to limit the GAL recipient attributes included in your exported text file. The BORK utility CD-ROM is in TechNet, in the Microsoft Developer Network (MSDN), and in the BORK package from Microsoft Press. Use Start, Find to locate the header.exe file for your server's OS. Run this utility on Exchange Server to access the Directory Header Configuration dialog box, which Screen 1, page 8, shows.
Set the Object Class to Mailbox and the Directory Mode to Export, and select the minimum attributes needed for an address list—the Display Name and E-mail Addresses fields—in addition to the required Object-Class field. You might also want to include phone numbers or other attributes. Click File to specify the location and filename for the comma-separated values (.csv) file where the utility will store the header information, then click Generate.
Now, switch to Exchange Administrator, and choose Tools, Directory Export. Screen 2 shows an export set up to use the same header.csv file that you created with the Import Header tool; this setup ensures that Exchange Administrator exports only the fields you select. Click Export to generate the .csv file containing the mailbox information.
You're not finished yet! (By now, using Exchange Server as an LDAP server might look like a pretty good alternative.) The E-mail Addresses field contains not just the SMTP address but also the X.400 address and any other addresses for each mailbox. Fortunately, you can use Microsoft Excel to separate the addresses. When you open the .csv file in Excel, each mailbox is in a separate row, with each field in a separate column. Select all the address cells in the E-mail Addresses column, then choose Data, Text to Columns. In the Convert Text to Columns Wizard, specify that you've delimited the text by inserting %, the symbol Exchange Server uses to separate the different email addresses. With any luck, when you finish running the wizard, you'll have each different address type in a separate column. Unfortunately, the order of the address types sometimes varies. Depending on the number of mailboxes involved, you might want to develop formulas to clear out unneeded addresses or just move them around manually.
The one formula you will need is the one that strips SMTP: from the beginning of the SMTP address. The formula uses Excel's SUBSTITUTE function and looks like this:
where <address> represents the cell containing the original SMTP address from which you want to strip the SMTP: text.
After you finish cleaning up the .csv file, save the file and email it to your users with instructions for importing it into their mail client(s). Outlook users can use the File, Import and Export command. Outlook 98 users can use the same command, but they also must get the Field Mapping Patch from http://officeupdate.microsoft.com/downloaddetails/field98.htm.
For more detailed information about the Import Header tool, see the Microsoft article, "XADM: Bulk Import/Export FAQ" at http://support.microsoft.com/support/kb/articles/q155/4/14.asp. Remember that if you use this method to distribute addresses to remote users, you need to periodically send updates as addresses change.
Can I customize the message that Exchange Server sends when a user's mailbox exceeds its storage limits?
Sorry, but the answer is no. You can set storage limits on the General tab of the Private Information Store in each server or on the Limits tab of an individual recipient. However, Exchange Server provides no way to change the message triggered when a user exceeds those limits.
How can I send a standard message to a group of individual Internet addresses but have each recipient receive a personalized message?
One situation in which this need arises is when you want to respond to Internet addresses collected from your Web site. The standard approach is to use a distribution list—in the GAL, in your Personal Address Book (PAB), or one you build on demand from an Outlook Contacts folder. However, this approach doesn't offer a personalized To address.
If you have Microsoft Word 97, consider using its Mail Merge feature. You can write the text of the message in Word and then merge that message with an Outlook Contacts folder, an external database, a delimited text file, or a Word table that contains the data. The merge data source must include the recipient's email address. You can also include any other fields you need, except custom Outlook form fields.
I can't explain mail merge step by step here, but I'll give you an overview and some tips. The Tools, Mail Merge command in Word launches the Mail Merge Helper to guide you through the process of creating the Word document that holds your message text, selecting a data source, and performing the merge. If you've hesitated to use this feature for email because of a bad experience with WordMail (Word as your Outlook email editor), don't worry: WordMail doesn't enter into the picture. You create a regular Word document containing merge fields, then the Mail Merge function takes care of addressing and sending the messages.
Word's Mail Merge lets you query on most fields to select particular records for merging, but the function's big limitation is that you can't query on the Category field. Therefore, if you organize contact entries by category, you need to filter and copy them to a temporary contacts folder first. When you select the data source in the Mail Merge Helper, choose Use Address Book, then pick Outlook Address Book. As Screen 3 shows, you'll see a list of available folders that contain contacts, including the one to which you copied the filtered contacts. I keep a Mail Merge folder handy, cleaning it out before I start each new merge session.
To tell Word that you want to merge to email messages, go to the Mail Merge Helper dialog box and click Merge. Under Merge to, choose Electronic mail and click Setup. You must specify the Data field with Mail/Fax address. If you're using Outlook Contacts, this field is the Email_Address field, as Screen 4 shows. Set your message subject on this Merge To Setup dialog box, too. For most Mail Merge jobs, clear the Send document as an attachment box so that Word sends your message as plain text rather than as a Word attachment. Because the message goes as plain text, use the Format, Paragraph command to turn off any automatic spacing between paragraphs but remember to insert a blank line to separate paragraphs.
One final caution: When you merge to email, Outlook sends the messages immediately if you're currently connected to Exchange Server. You might want to do your email merging with an Outlook profile that has offline folders enabled so you can start the process offline. That way, you can review the messages in your Outbox folder before synchronizing with the server and sending them.
I don't have Word. What is an alternative to Mail Merge for sending individual messages to a group of recipients with Internet mail addresses?
Another approach is to use add-ons. One add-on is ProSoft Apps' PC iMail (http://www.prosoftapps.com), which maintains distribution lists as text files and sends a copy of your message individually to each recipient. Another add-on is /n software's Exchange Templates (http://www.nsoftware.com). With this program, you also need the free Personalized Bulk Email extension, which you can order from http://www.nsoftware.com/long_ext001.htm.
What's the best way for a person designated as the delegate for an executive to get the reminders from the executive's Outlook Calendar folder?
Outlook provides pop-up reminder notices only for appointments in your personal mailbox's Calendar folder. The delegate can save a copy of the executive's appointments in the delegate's Calendar and then put a filter on the Required Attendees and Optional Attendees fields to show only the appointments for the executive or only the delegate's personal appointments. However, reminders will pop up for both, regardless of what filter you apply.
Another approach is to use the Microsoft Exchange Event Service and a script on the executive's Calendar folder to periodically check for upcoming meetings and send the delegate an email message as a reminder. For more information about the Event Service, see Tony Redmond, "Closing the Messaging and Groupware Gap with Exchange 5.5's Scripting Agent," Windows NT Magazine, March 1998.
How can I make the File As field in Outlook Contacts store the item as Last Name, First Name (Company)?
To make the File As field work that way, make two changes in your Contacts folder:
- Customize the Contact form so that it always sets the File As field correctly on items that you add or update.
- Change existing contacts to put the name and company into the File As field and to make the existing contacts use the new form.
I'll look at the second task in the next question. For the first task, open the Contact form in design mode. In Outlook 97, create a new Contact item, then choose Tools, Design Outlook Form. In Outlook 98, choose Tools, Forms, Design a Form, and pick the Contact form from the Standard Forms Library.
Next, choose Form, View Code to display the code window. Enter the code in Listing 1 for the Item_Write event. Whenever you save an item, this code updates the File As field to display the full name, company name, or both, depending on which names are available.
How did I know that the name of the field labeled Company on the Contacts form is CompanyName? An easy way to find the field's name is to display the Object Browser in Word or Excel so you can see the structure of every Outlook object. Here's how to put the Object Browser to work:
- Start Word or Excel, then choose Tools, Macro, Visual Basic Editor.
- Choose Tools, References. From the list of Available References, check Microsoft Outlook 8.0 Object Library (in Outlook 97) or Outlook 98 Type Library.
- Click OK to add the Outlook library to the project.
- Choose View, Object Browser.
- In the drop-down list at the top of the Object Browser window, switch from
to Outlook. Now you can browse through the different Outlook objects. Screen 5 shows the Object Browser displaying all the fields for an Outlook contact, including the CompanyName field.
How can I change existing contacts to put the name and company into the File As field?
To make existing items show the same information in the File As field as new items show, you need to update existing items, using the new form that you created with the instructions in the previous question. The Microsoft article "OL97: How to Update Existing Items to Use a New Custom Form" at http://support.microsoft.com/support/kb/articles/q170/3/01.asp is a good place to start. The article demonstrates how to use Visual Basic Script (VBScript) to create a form that checks the message class of all items in a folder and update it as needed. When the script saves each item, the code in the Item_Write event fires, updating the contents of the File As field.
Can I set up item-level security in a public folder?
Since my first "No" answer to this question in the October 1998 issue, I have found at least one reason to change my answer to "Maybe." Microsoft's Tom Rizzo has written an article, "A Secure Outlook" (http://www.microsoft.com/outlookdev/articles/modsecure.htm), about how to use a separate Microsoft Access database to store information about users and the forms and fields they have permission to view. One specific example shows how you can hide salary information from certain users. You can adapt the techniques to hide entire forms from particular users, because you can cancel the event that fires when a user opens a form so that the form doesn't display.
Listing 2 gives an example of how this might work. It first obtains the name of the current Outlook user and then checks it using a separate function named ValidUser() that contains whatever tests you want to perform to validate the user. If the user doesn't pass the validation tests, the script sets Item_Open to False, which prevents the user from opening the folder.