<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag 'devmsgteam'</title><link>http://blogs.msdn.com/search/SearchResults.aspx?q=&amp;tag=devmsgteam&amp;orTags=0&amp;o=DateDescending</link><description>Search results matching tag 'devmsgteam'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>The getVisible callback has no effect on Tabs with idMso when startFromScratch=true. Bug?</title><link>http://blogs.msdn.com/akashb/archive/2009/12/23/the-getvisible-callback-has-no-effect-on-tabs-with-idmso-when-startfromscratch-true-bug.aspx</link><pubDate>Wed, 23 Dec 2009 08:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9940623</guid><dc:creator>akash</dc:creator><description>&lt;p&gt;This is another issue that I bumped into when startFromScratch is set to true. What I wanted to do was to show/hide tabs based on Message Class. If my Message Class was IPM.Note.Custom then I wanted to just show the “My Tab” otherwise I wanted to show the “TabReadMessage”.&lt;/p&gt;  &lt;p&gt;Why did I set the startFromScratch to true? I had to customize the Quick Access Toolbar(QAT) also. Below is what my Ribbon XML looks like:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;customUI&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ribbon&lt;/span&gt; &lt;span style="color: #ff0000"&gt;startFromScratch&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tabs&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tab&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;MyTab&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;label&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;My Tab&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;getVisible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;MyTab_OnGetVisible&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tab&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tab&lt;/span&gt; &lt;span style="color: #ff0000"&gt;idMso&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;TabReadMessage&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;getVisible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;TabReadMessage_OnGetVisible&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tab&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tabs&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ribbon&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;customUI&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;br /&gt;When I opened a message with the IPM.Note.Custom message class, my callbacks(MyTab_OnGetVisible,TabReadMessage_OnGetVisible) fire and I return &lt;strong&gt;&lt;em&gt;True&lt;/em&gt;&lt;/strong&gt; from the &lt;strong&gt;&lt;em&gt;MyTab_OnGetVisible&lt;/em&gt;&lt;/strong&gt; callback and &lt;strong&gt;&lt;em&gt;False&lt;/em&gt;&lt;/strong&gt; from the &lt;strong&gt;&lt;em&gt;TabReadMessage_OnGetVisible&lt;/em&gt;&lt;/strong&gt; callback. Things are good this point.&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;Now I open a message with the IPM.Note(regular mail message) message class, my callbacks fire and I return &lt;strong&gt;&lt;em&gt;False&lt;/em&gt;&lt;/strong&gt; from the &lt;strong&gt;&lt;em&gt;MyTab_OnGetVisible&lt;/em&gt;&lt;/strong&gt; callback and &lt;em&gt;&lt;strong&gt;True&lt;/strong&gt;&lt;/em&gt; from the &lt;strong&gt;&lt;em&gt;TabReadMessage_OnGetVisible&lt;/em&gt;&lt;/strong&gt; callback and expect to the “My Tab” hidden and the “TabReadMessage” visible.. Right?&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;To my surprise, the callbacks fires just fine but the “True” that I return from the &lt;strong&gt;&lt;em&gt;TabReadMessage_OnGetVisible&lt;/em&gt;&lt;/strong&gt; callback has no effect on the visibility of the tab and I am left with no tabs on the screen. Bug?&lt;/div&gt;

&lt;p&gt;From what I know this bug has been fixed in Office 14 and a fix for Office 12 has been requested for.&lt;/p&gt;</description></item><item><title>Did you ever have to re-sign the Application and Deployment manifest for a VSTO 3.0 ClickOnce add-in?</title><link>http://blogs.msdn.com/akashb/archive/2009/12/23/did-you-ever-have-to-re-sign-the-application-and-deployment-manifest-for-a-vsto-3-0-clickonce-add-in.aspx</link><pubDate>Wed, 23 Dec 2009 08:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9940652</guid><dc:creator>akash</dc:creator><description>&lt;p&gt;My customer had written a VSTO 3.0 add-in but could not publish(ClickOnce) it directly as he did not have access to the production environment. Further more there was a need to change a setting in the config file. He create a Web Setup project to deploy all the file and also altered the config file using a custom action in the setup project.&lt;/p&gt;  &lt;p&gt;Changing the config file invalidated the hash and now the application and deployment manifest for the add-in had to be resigned. In case you have never done it before, below are links to a very good blog post and a Channel9 video on how to re-sign the VSTO 3.0 manifests using MAGE.&lt;/p&gt;  &lt;p&gt;Re-signing ClickOnce Application and Deployment Manifests with MAGE    &lt;br /&gt;&lt;a title="http://channel9.msdn.com/posts/funkyonex/Resigning-ClickOnce-Application-and-Deployment-Manifests-with-MAGE/" href="http://channel9.msdn.com/posts/funkyonex/Resigning-ClickOnce-Application-and-Deployment-Manifests-with-MAGE/" target="_blank"&gt;http://channel9.msdn.com/posts/funkyonex/Resigning-ClickOnce-Application-and-Deployment-Manifests-with-MAGE/&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Signing and re-signing manifests in ClickOnce     &lt;br /&gt;&lt;a title="http://blogs.msdn.com/vsto/archive/2009/04/29/signing-and-re-signing-manifests-in-clickonce.aspx" href="http://blogs.msdn.com/vsto/archive/2009/04/29/signing-and-re-signing-manifests-in-clickonce.aspx"&gt;http://blogs.msdn.com/vsto/archive/2009/04/29/signing-and-re-signing-manifests-in-clickonce.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;</description></item><item><title>Can’t CopyTo a PST</title><link>http://blogs.msdn.com/stephen_griffin/archive/2009/12/17/can-t-copyto-a-pst.aspx</link><pubDate>Thu, 17 Dec 2009 08:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9938425</guid><dc:creator>Stephen Griffin</dc:creator><description>&lt;p&gt;We recently had a customer who was copying messages around using &lt;a href="http://msdn.microsoft.com/en-us/library/cc839922.aspx"&gt;CopyTo&lt;/a&gt;. They found that for certain messages, if the target message store was a PST, they’d get MAPI_E_NO_ACCESS (0x80070005). They saw this for the same messages every time, when other messages would copy to the same PST just fine.&lt;/p&gt;  &lt;p&gt;When I debugged the failure, I found the root of the problem was that the source message had an attachment with the property 0x67100003 set on it. The PST provider does not allow this property to be set on a messages in its store, so any attempt to set it returns the error MAPI_E_NO_ACCESS. When they did the CopyTo of the message properties, because &lt;a href="http://msdn.microsoft.com/en-us/library/cc842175.aspx"&gt;PR_MESSAGE_ATTACHMENTS&lt;/a&gt; was not excluded, one of the side effects was that MAPI looped through the the attachments and copied them, using calls to CopyTo at the attachment level. These CopyTo calls did not use an exclusion array at all, so every property on the source attachments were copied to the destination. When CopyTo reached the property 0x67100003, the PST provider returned an error, which caused the attachment level CopyTo to fail, which in turn caused the customer’s CopyTo call to fail.&lt;/p&gt;  &lt;p&gt;By the way, 0x67100003 isn't the only property that causes this problem. In fact, most properties in the service provider defined non-transmittable range (&lt;a href="http://msdn.microsoft.com/en-us/library/cc842410.aspx"&gt;0x6600-0x67FF&lt;/a&gt;) caused the same problem.&lt;/p&gt;  &lt;p&gt;The fix we used was to add PR_MESSAGE_ATTACHMENTS to the exclusion list for CopyTo, then copy the attachments manually using &lt;a href="http://msdn.microsoft.com/en-us/library/cc842318.aspx"&gt;OpenAttach&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/cc765541.aspx"&gt;CreateAttach&lt;/a&gt;, and CopyTo, passing an exclusion array specifying that the non-transmittable properties should be excluded. Since this is the same logic CopyTo uses to copy attachments (without the exclusion array), doing the copy like this doesn’t have a performance hit.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:right; margin:0px; padding:4px 0px 4px 0px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://blogs.msdn.com/stephen_griffin/archive/2009/12/17/can-t-copyto-a-pst.aspx";digg_title = "Can’t CopyTo a PST";digg_bgcolor = "#FFFFFF";digg_skin = "compact";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;</description></item><item><title>Custom forms deployment : Where we can publish Outlook Custom forms?</title><link>http://blogs.msdn.com/deva/archive/2009/12/16/custom-forms-deployment-where-we-can-publish-outlook-custom-forms.aspx</link><pubDate>Wed, 16 Dec 2009 08:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9937449</guid><dc:creator>deva</dc:creator><description>&lt;p&gt;In Outlook, custom forms are typically published to a forms library so that only one copy of a form is stored on your computer. Individual items contain a Message Class field that indicates which form to use to display the data that is contained in the item. When you publish custom forms to a forms library, Microsoft Exchange Server-based computers and Outlook use considerably less resources and bandwidth because the form itself does not need to be stored within each individual item.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" src="http://www.outlook-tips.net/howto/i/datestamp.jpg" width="315" height="235" /&gt;&lt;/p&gt;  &lt;h5&gt;Considerations When You Are Deciding Where to Publish a Form: &lt;/h5&gt;  &lt;p&gt;There are many questions to take into account when you are deciding where to publish a form: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Is the form based on a folder solution, or is it an e-mail message form that is designed to be sent to recipients? &lt;/li&gt;    &lt;li&gt;Are you using an Exchange Server-based computer? If you are using an Exchange Server-based computer, is it possible to publish the form to the Organizational Forms Library, or has your organization placed restrictions on what types of forms can be stored there? &lt;/li&gt;    &lt;li&gt;How many people need access to the form? &lt;/li&gt;    &lt;li&gt;Will the form be updated often, making it important to have only one copy of the form deployed centrally? &lt;/li&gt;    &lt;li&gt;Does the form need to be available offline? &lt;/li&gt;    &lt;li&gt;If this is an e-mail message form, will it be used only inside the organization, or will it be sent to other recipients outside of the organization? &lt;/li&gt;    &lt;li&gt;How will the new form be opened?&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Where we can publish?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now we can see where we can publish these custom forms. &lt;/p&gt;  &lt;p&gt;Outlook forms solutions can vary greatly, especially because Outlook has a number of different types of standard forms. It is often difficult to determine the best place to publish a form, and there are many factors to take into account when you make the decision&lt;strong&gt;. &lt;/strong&gt;Forms can be published to three locations:     &lt;br /&gt;(1) A folder (or Folder Forms Library)    &lt;br /&gt;(2) Organizational Forms Library    &lt;br /&gt;(3) Personal Forms Library&lt;/p&gt;  &lt;p&gt;We’ll discuss them in detail and how these three makes differences:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;(1) A folder (or Folder Forms Library):&lt;/strong&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;For most folder-based forms solutions, publish the form to the folder so that it is available whenever someone is using the folder. &lt;/li&gt;    &lt;li&gt;If you publish the form in a public folder, the form is available to everyone who can access the folder. &lt;/li&gt;    &lt;li&gt;If you publish the form to one of your personal folders, it is available only to you when you are using that folder. &lt;/li&gt;    &lt;li&gt;Contact, Post, Task, and Journal forms are examples of the types of forms that are typically associated with a folder. &lt;/li&gt;    &lt;li&gt;One advantage to publishing a form to a folder is that the form is available on the &lt;b&gt;Actions&lt;/b&gt; menu when you are in the folder.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;(2) Organizational Forms Library:&lt;/strong&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Publish the form to this library if you want to make the form available to everyone in your organization, such as a form to report vacation time. &lt;/li&gt;    &lt;li&gt;This library is often used for e-mail message forms because they are typically not based on a specific folder. &lt;/li&gt;    &lt;li&gt;You can publish a form to the Organizational Forms Library when you want to use the same custom form in more than one folder. &lt;/li&gt;    &lt;li&gt;When you do this, you can maintain only a single published form. &lt;/li&gt;    &lt;li&gt;Forms that are published to this library are accessible to everyone in the organization as long as they are given permissions to the library by the administrator. &lt;/li&gt;    &lt;li&gt;The library is stored on the Microsoft Exchange Server-based computer. &lt;/li&gt;    &lt;li&gt;The administrator must give you permissions to publish to the Organizational Forms Library. &lt;/li&gt;    &lt;li&gt;This permission is typically given to only a few individuals or a department that manages the Exchange Server-based computer.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;(3) Personal Forms Library:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Forms that are saved in this library are only accessible to you. &lt;/li&gt;    &lt;li&gt;When you publish a form to the Personal Forms Library, the form is stored as a hidden item in the root folder of your mailbox or Personal Folders (.pst) file, whichever is your default mail delivery location. &lt;/li&gt;    &lt;li&gt;Like forms that are stored in the Organizational Forms Library, these forms can be opened by using the &lt;b&gt;Choose Form&lt;/b&gt; command. &lt;/li&gt;    &lt;li&gt;Save a form to this library when you create a form for your own personal use, such as a standard e-mail message form that is pre-addressed to recipients.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Please note:&lt;/strong&gt; It is also possible to store an Outlook form as a file in the file system or as an item in an Outlook folder. &lt;strong&gt;Microsoft recommends that you to avoid these approaches, because the form will be a one-off form.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/deva/WindowsLiveWriter/WherewecanpublishOutlookCustomforms_723D/image_5.png" width="244" height="193" /&gt; &lt;/p&gt;  &lt;h6&gt;&lt;font size="2"&gt;Deciding Where to Publish Folder-based Forms:&lt;/font&gt;&lt;/h6&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="2"&gt;When you create a folder-based solution where the primary focus of the form is to display the items in a single folder, typically publish the form to the folder itself. &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;When you publish the form to the folder, the folder is a self-contained entity and the form is available on the &lt;b&gt;Actions&lt;/b&gt; menu.&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;However, there are scenarios where you may not want to publish a typical folder-based form to a folder. &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;If you use a form in more than one folder, and each folder always uses the same version of the form, consider publishing the form into either the Organizational Forms Library or the Personal Forms Library. When you do this, there is only one copy of the published form and it is easier to update if you need to make changes. &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;If you are the only person who needs access to this form, publish the form in Personal Forms Library. &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;If other people need to access to the form, and the form is typical in a public folder on an Exchange Server-based computer, investigate whether or not you may be able to publish the form to the Organizational Forms Library. &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;Note:&lt;/strong&gt; One potential disadvantage to this approach is that the form will not be available under the &lt;b&gt;Actions&lt;/b&gt; menu unless it is published to the folder. However, if it is the default form for the folder, as is typically the case, this will not make too much of a difference because you or the users can use a toolbar button to open new items. &lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h6&gt;&lt;font size="2"&gt;Deciding Where to Publish Message-based Forms&lt;/font&gt;&lt;/h6&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="2"&gt;If the form is based on an e-mail message and it is used by you and only a couple of other users, publish the form to the Personal Forms Library for all of the users. However, if you are going to create new items based on this form, you may want to publish it to your Inbox so that you can access it on the &lt;b&gt;Actions&lt;/b&gt; menu. &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;If the form is going to be used by many people within an organization, publish it in the Organizational Forms Library so that there is only one copy of the form to maintain and all of the users have access to it. This approach, however, can make the form more difficult to open.&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;</description></item><item><title>PR_SEARCH_KEY and Draft Messages</title><link>http://blogs.msdn.com/stephen_griffin/archive/2009/12/14/pr-search-key-and-draft-messages.aspx</link><pubDate>Mon, 14 Dec 2009 08:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9936568</guid><dc:creator>Stephen Griffin</dc:creator><description>&lt;p&gt;It used to be that if you wanted to track a message through various Object Model events such as &lt;a href="http://msdn.microsoft.com/en-us/library/bb147644.aspx"&gt;NewInspector&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/bb147641.aspx"&gt;ItemSend&lt;/a&gt;, one way to do it was to grab &lt;a href="http://msdn.microsoft.com/en-us/library/cc815908.aspx"&gt;PR_SEARCH_KEY&lt;/a&gt;. A customer recently discovered that this doesn’t always work after applying a recent hotfix. Before applying the hotfix, PR_SEARCH_KEY would remain unchanged during the various events. After applying the hotfix, if they were in cached mode they would see the search key change during the send event, but only if the user saved the message, or autosave kicked in, before submitting.&lt;/p&gt;  &lt;p&gt;The hotfix in question is &lt;a href="http://support.microsoft.com/kb/973404"&gt;973404&lt;/a&gt;. More specifically, the change that broke the customer’s code was to address the issue outlined in &lt;a href="http://support.microsoft.com/kb/974413"&gt;974413&lt;/a&gt;. This issue is in how Outlook relates Read Receipts to the sent items using PR_SEARCH_KEY. In this issue, if a user created an item as a draft, perhaps to use as a template for commonly sent mail, then copied the message before sending, the draft item and the new item would have the same search key. This in turn broke the read receipt logic.&lt;/p&gt;  &lt;p&gt;The fix we made was that whenever we copy a message in the Drafts folder, we don’t copy the search key, which allows the copy to get a new search key and allows the read receipt logic to function. Couple this with the user saving the message to Drafts while they’re working on it – under this new behavior the saved message now has a new search key. Some of the object model events the customer’s code would see would be for the message actually being submitted, and some were for the item in the draft folder. Before the read receipt fix, these different message objects would all have the same search key. But after the fix, the search keys can be different.&lt;/p&gt;  &lt;p&gt;The fix here is not to rely on PR_SEARCH_KEY at all. In the customer’s scenario, they were using PR_SEARCH_KEY to ensure they didn’t “stamp” a message with their properties more than once during the submission process. However, since they were already stamping data on the message, it made sense to just look for their stamp before stamping again.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:right; margin:0px; padding:4px 0px 4px 0px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://blogs.msdn.com/stephen_griffin/archive/2009/12/14/pr-search-key-and-draft-messages.aspx";digg_title = "PR_SEARCH_KEY and Draft Messages";digg_bgcolor = "#FFFFFF";digg_skin = "compact";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;</description></item><item><title>MAPI Now Likes Exchange 2010</title><link>http://blogs.msdn.com/stephen_griffin/archive/2009/12/10/mapi-now-likes-exchange-2010.aspx</link><pubDate>Thu, 10 Dec 2009 08:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9935142</guid><dc:creator>Stephen Griffin</dc:creator><description>&lt;P&gt;We &lt;A href="http://msexchangeteam.com/archive/2009/12/09/453486.aspx" mce_href="http://msexchangeteam.com/archive/2009/12/09/453486.aspx"&gt;just announced&lt;/A&gt; a new release of the &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=e17e7f31-079a-43a9-bff2-0a110307611e" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=e17e7f31-079a-43a9-bff2-0a110307611e"&gt;MAPI Download&lt;/A&gt; that’s pretty much mandatory if you want to work with Exchange 2010. You’ll also need to get and apply &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=371add31-d7a0-4c8b-8325-a6fced2d05e6" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=371add31-d7a0-4c8b-8325-a6fced2d05e6"&gt;Rollup 1 (RU1) for Exchange 2010&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Details about the MAPI Download:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The first version of the MAPI download which is compatible with Exchange 2010 is 6.5.8147&lt;/LI&gt;
&lt;LI&gt;If you already have a version of the MAPI Download installed, you &lt;STRONG&gt;must unininstall&lt;/STRONG&gt; it before installing the new version. The installer does not upgrade, nor does it warn you if you try to install it without uninstalling the previous version.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The new MAPI Download fixes a number of problems MAPI had with Exchange 2010:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You no longer need to &lt;A href="http://blogs.msdn.com/dvespa/archive/2009/09/02/how-to-configure-a-mapi-profile-to-connect-to-exchange-2010.aspx" mce_href="http://blogs.msdn.com/dvespa/archive/2009/09/02/how-to-configure-a-mapi-profile-to-connect-to-exchange-2010.aspx"&gt;disable encryption&lt;/A&gt; to make a connection.&lt;/LI&gt;
&lt;LI&gt;Notifications, which had not been working, now work.&lt;/LI&gt;
&lt;LI&gt;We no longer crash during certain SetProps calls.&lt;/LI&gt;
&lt;LI&gt;Access to the &lt;A href="http://blogs.msdn.com/stephen_griffin/archive/2008/02/05/recovery-storage-group-it-s-not-just-for-exmerge.aspx" mce_href="http://blogs.msdn.com/stephen_griffin/archive/2008/02/05/recovery-storage-group-it-s-not-just-for-exmerge.aspx"&gt;RSG&lt;/A&gt; (now called &lt;A href="http://technet.microsoft.com/en-us/library/dd876954.aspx" mce_href="http://technet.microsoft.com/en-us/library/dd876954.aspx"&gt;Recovery Database&lt;/A&gt;) now works again.&lt;/LI&gt;
&lt;LI&gt;Admin privilege access to Public Folder stores (OPENSTORE_USE_ADMIN_PRIVILEGE) works again. This fix is actually in RU1.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;If I identify other issues fixed by the updated MAPI download, I’ll add them in here.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;
&lt;P&gt;[Update: 12/14/09] Forgot to mention that you'll still need these &lt;A href="http://blogs.msdn.com/dvespa/archive/2009/09/02/how-to-configure-a-mapi-profile-to-connect-to-exchange-2010.aspx" mce_href="http://blogs.msdn.com/dvespa/archive/2009/09/02/how-to-configure-a-mapi-profile-to-connect-to-exchange-2010.aspx"&gt;tweaks&lt;/A&gt; for your profile, but you don't have to disable encryption anymore.&lt;BR&gt;[Update: 12/21/09] Added information about admin access to PF.&lt;/P&gt;
&lt;DIV style="TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px" class=wlWriterHeaderFooter&gt;
&lt;SCRIPT type=text/javascript&gt;digg_url = "http://blogs.msdn.com/stephen_griffin/archive/2009/12/10/mapi-now-likes-exchange-2010.aspx";digg_title = "MAPI Now Likes Exchange 2010";digg_bgcolor = "#FFFFFF";digg_skin = "compact";&lt;/SCRIPT&gt;

&lt;SCRIPT type=text/javascript src="http://digg.com/tools/diggthis.js" mce_src="http://digg.com/tools/diggthis.js"&gt;&lt;/SCRIPT&gt;

&lt;SCRIPT type=text/javascript&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/SCRIPT&gt;
&lt;/DIV&gt;</description></item><item><title>Exchange 2010 RU 1 has been released</title><link>http://blogs.msdn.com/dvespa/archive/2009/12/09/exchange-2010-ru-1-has-been-released.aspx</link><pubDate>Wed, 09 Dec 2009 08:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9934919</guid><dc:creator>dvespa</dc:creator><description>&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=371add31-d7a0-4c8b-8325-a6fced2d05e6&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=371add31-d7a0-4c8b-8325-a6fced2d05e6&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=371add31-d7a0-4c8b-8325-a6fced2d05e6&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Along with a new version of the MAPI download:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=e17e7f31-079a-43a9-bff2-0a110307611e&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=e17e7f31-079a-43a9-bff2-0a110307611e&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=e17e7f31-079a-43a9-bff2-0a110307611e&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Once the new MAPI download has been installed you should no longer have to disable MAPI Encryption on the Client Access Server &lt;/P&gt;
&lt;P&gt;Read more about it here:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msexchangeteam.com/archive/2009/12/09/453486.aspx" mce_href="http://msexchangeteam.com/archive/2009/12/09/453486.aspx"&gt;http://msexchangeteam.com/archive/2009/12/09/453486.aspx&lt;/A&gt;&lt;/P&gt;</description></item><item><title>How to create recurring tasks using Exchange Web Services for Exchange 2007/2010?</title><link>http://blogs.msdn.com/deva/archive/2009/12/08/how-to-create-recurring-tasks-using-exchange-web-services-for-exchange-2007-2010.aspx</link><pubDate>Tue, 08 Dec 2009 08:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9934081</guid><dc:creator>deva</dc:creator><description>Earlier i got a chance to play around creating recurring tasks. I followed the article from MSDN and it worked like charm for me.   &lt;br /&gt;  &lt;br /&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; TaskType CreateRecurringTask()&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;// Create the task item and set property values.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    TaskType task = &lt;span class="kwrd"&gt;new&lt;/span&gt; TaskType();&lt;/pre&gt;

  &lt;pre class="alt"&gt;    task.Subject = &lt;span class="str"&gt;&amp;quot;Recurring Task&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;    task.Body = &lt;span class="kwrd"&gt;new&lt;/span&gt; BodyType();&lt;/pre&gt;

  &lt;pre class="alt"&gt;    task.Body.BodyType1 = BodyTypeType.Text;&lt;/pre&gt;

  &lt;pre&gt;    task.Body.Value = &lt;span class="str"&gt;&amp;quot;Occurs every week&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    task.StartDate = DateTime.Now;&lt;/pre&gt;

  &lt;pre&gt;    task.StartDateSpecified = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;// Create the regeneration pattern.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    WeeklyRegeneratingPatternType regenerationPattern = &lt;span class="kwrd"&gt;new&lt;/span&gt; WeeklyRegeneratingPatternType();&lt;/pre&gt;

  &lt;pre&gt;    regenerationPattern.Interval = 1;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;// Define the recurrence pattern.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    NoEndRecurrenceRangeType recurrenceRange = &lt;span class="kwrd"&gt;new&lt;/span&gt; NoEndRecurrenceRangeType();&lt;/pre&gt;

  &lt;pre&gt;    recurrenceRange.StartDate = task.StartDate;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;// Set the regeneration and recurrence patterns.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    TaskRecurrenceType recurrence = &lt;span class="kwrd"&gt;new&lt;/span&gt; TaskRecurrenceType();&lt;/pre&gt;

  &lt;pre&gt;    recurrence.Item = regenerationPattern;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    recurrence.Item1 = recurrenceRange;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    task.Recurrence = recurrence;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;// Create the request to make a new task item.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    CreateItemType createItemRequest = &lt;span class="kwrd"&gt;new&lt;/span&gt; CreateItemType();&lt;/pre&gt;

  &lt;pre class="alt"&gt;    createItemRequest.Items = &lt;span class="kwrd"&gt;new&lt;/span&gt; NonEmptyArrayOfAllItemsType();&lt;/pre&gt;

  &lt;pre&gt;    createItemRequest.Items.Items = &lt;span class="kwrd"&gt;new&lt;/span&gt; ItemType[1];&lt;/pre&gt;

  &lt;pre class="alt"&gt;    createItemRequest.Items.Items[0] = task;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;// Send the request and receive the response.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    CreateItemResponseType createItemResponse = &lt;span class="kwrd"&gt;this&lt;/span&gt;.Service.CreateItem(createItemRequest);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="rem"&gt;// Access a response message.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    ItemInfoResponseMessageType responseMessage = createItemResponse.ResponseMessages.Items[0] &lt;span class="kwrd"&gt;as&lt;/span&gt; ItemInfoResponseMessageType;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;// Return the new task item.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; responseMessage.Items.Items[0] &lt;span class="kwrd"&gt;as&lt;/span&gt; TaskType;&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; ExchangeServiceBinding Service&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;    get&lt;/pre&gt;

  &lt;pre&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.service == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.service = &lt;span class="kwrd"&gt;new&lt;/span&gt; ExchangeServiceBinding();&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.service.Credentials = &lt;span class="kwrd"&gt;new&lt;/span&gt; NetworkCredential(&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;this&lt;/span&gt;.UserName,&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;this&lt;/span&gt;.Password,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;this&lt;/span&gt;.Domain);&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.service.Url = &lt;span class="kwrd"&gt;this&lt;/span&gt;.Url; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="rem"&gt;// Set the request version.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.service.RequestServerVersionValue = &lt;span class="kwrd"&gt;new&lt;/span&gt; RequestServerVersion();&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.service.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="rem"&gt;// Specify the time zone for the DateTime properties of tasks.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            TimeZoneDefinitionType tzdt = &lt;span class="kwrd"&gt;new&lt;/span&gt; TimeZoneDefinitionType();&lt;/pre&gt;

  &lt;pre&gt;            tzdt.Id = &lt;span class="str"&gt;&amp;quot;Eastern Standard Time&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            TimeZoneContextType tzct = &lt;span class="kwrd"&gt;new&lt;/span&gt; TimeZoneContextType();&lt;/pre&gt;

  &lt;pre&gt;            tzct.TimeZoneDefinition = tzdt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.service.TimeZoneContext = tzct;&lt;/pre&gt;

  &lt;pre&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.service;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;</description></item><item><title>Push Notifications broken in Exchange 2010</title><link>http://blogs.msdn.com/pcreehan/archive/2009/12/02/push-notifications-broken-in-exchange-2010.aspx</link><pubDate>Wed, 02 Dec 2009 08:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9931605</guid><dc:creator>pcreehan</dc:creator><description>&lt;p&gt;We recently found a bug in the way Exchange 2010 calls into your EWS Push Notification endpoint. You may see errors on the Exchange server indicating that it received HTTP 500 errors when calling into your client. Basically, the SOAPAction header is not being sent along with the request. I’ll update this post when this issue is resolved.&lt;/p&gt;</description></item><item><title>Outlook 2010 And Bitness</title><link>http://blogs.msdn.com/stephen_griffin/archive/2009/11/30/outlook-2010-and-bitness.aspx</link><pubDate>Mon, 30 Nov 2009 08:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9930176</guid><dc:creator>Stephen Griffin</dc:creator><description>&lt;p&gt;Angela’s put together a good set of &lt;a href="http://blogs.msdn.com/officedevdocs/archive/2009/11/25/developing-outlook-2010-solutions-for-32-bit-and-64-bit-systems.aspx"&gt;guidelines for developing for Outlook 2010&lt;/a&gt;, particularly as it relates to whether your code is built for 32 bit or 64 bit (what we’re calling Bitness). To summarize, all MAPI or Outlook Object Model based apps and non-managed add-ins will need to be built in both 32 and 64 bit flavors to support both target environments, managed add-ins can be built as &lt;strong&gt;Any CPU&lt;/strong&gt;, and VB 6 based add-ins and apps need to be scrapped and rewritten entirely. Read the full article to get the finer points, along with a good collection of links to more resources.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:right; margin:0px; padding:4px 0px 4px 0px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://blogs.msdn.com/stephen_griffin/archive/2009/11/30/outlook-2010-and-bitness.aspx";digg_title = "Outlook 2010 And Bitness";digg_bgcolor = "#FFFFFF";digg_skin = "compact";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;</description></item></channel></rss>