![]() |
If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
![]()
I have a large number of mail messages which have been written in Finnish,
but have been marked with a US-ASCII code page. The result is that some of the characters are displayed incorrectly, e.g. "ä" is shown as a "d". It is possible to correct this error in Outlook by opening the message, setting the code page manually from the ViewEncoding menu and then saving the message. Instead of doing this to about 500 messages by hand, I tried to write a short program to do it. The result of running the code below is that the code page of all messages in my "Macro" folder is set to iso_8859_1 (as I want to happen). Unfortunately, when I open the messages they are still displayed incorrectly. However, if I open the View menu and look at the code page settings, they are correctly set to "Western European (ISO)" as I want them to be. I.e. the property change is successful, but the view of the message doesn't change. What is it that I am missing ? Changing the code page manually from the menu affects the message view immediately, while doing it programatically does not cause the view to change. Is there something in the mail message view (Inspector object) that persists ? Or should I be changing some other property than the InternetCodepage ? Thanks for all answers, Juha Sub SetMessageCodePages() Dim myolApp As Outlook.Application Dim myNamespace As Outlook.NameSpace Dim myMessages As Outlook.Items Dim myMessage As Object Const USASCII As Long = 20127 Const iso_8859_1 As Long = 28591 Set myolApp = CreateObject("Outlook.Application") Set myNamespace = myolApp.GetNamespace("MAPI") Set myInboxFolder = _ myNamespace.GetDefaultFolder(olFolderInbox) Set myRootFolder = myInboxFolder.Parent Set myMacroFolder = myRootFolder.Folders("Macro") Set myMessages = myMacroFolder.Items For Each myMessage In myMessages myMessage.InternetCodepage = iso_8859_1 Debug.Print "Code page has been set to:" & myMessage.InternetCodepage myMessage.Close olSave Next End Sub |
#2
|
|||
|
|||
![]()
AFAIK setting the InternetCodepage property changes the PR_INTERNET_CPID
MAPI property and that works fine for the Subject, Sender, etc. But when you modify the code page from the inspector, besides resetting the PR_INTERNET_CPID property, it sets the code page used by the RTF stream in PR_RTF_COMPRESSED property, which is used to display the body of the message. The code page specified in the RTF stream ({\rtf1\ansi\ansicpg1252...) takes precedence over PR_INTERNET_CPID for the message body. I don't think there is an easy way to reset the RTF codepage. Dmitry Streblechenko (MVP) http://www.dimastr.com/ OutlookSpy - Outlook, CDO and MAPI Developer Tool "QDC_Juha" wrote in message ... I have a large number of mail messages which have been written in Finnish, but have been marked with a US-ASCII code page. The result is that some of the characters are displayed incorrectly, e.g. "ä" is shown as a "d". It is possible to correct this error in Outlook by opening the message, setting the code page manually from the ViewEncoding menu and then saving the message. Instead of doing this to about 500 messages by hand, I tried to write a short program to do it. The result of running the code below is that the code page of all messages in my "Macro" folder is set to iso_8859_1 (as I want to happen). Unfortunately, when I open the messages they are still displayed incorrectly. However, if I open the View menu and look at the code page settings, they are correctly set to "Western European (ISO)" as I want them to be. I.e. the property change is successful, but the view of the message doesn't change. What is it that I am missing ? Changing the code page manually from the menu affects the message view immediately, while doing it programatically does not cause the view to change. Is there something in the mail message view (Inspector object) that persists ? Or should I be changing some other property than the InternetCodepage ? Thanks for all answers, Juha Sub SetMessageCodePages() Dim myolApp As Outlook.Application Dim myNamespace As Outlook.NameSpace Dim myMessages As Outlook.Items Dim myMessage As Object Const USASCII As Long = 20127 Const iso_8859_1 As Long = 28591 Set myolApp = CreateObject("Outlook.Application") Set myNamespace = myolApp.GetNamespace("MAPI") Set myInboxFolder = _ myNamespace.GetDefaultFolder(olFolderInbox) Set myRootFolder = myInboxFolder.Parent Set myMacroFolder = myRootFolder.Folders("Macro") Set myMessages = myMacroFolder.Items For Each myMessage In myMessages myMessage.InternetCodepage = iso_8859_1 Debug.Print "Code page has been set to:" & myMessage.InternetCodepage myMessage.Close olSave Next End Sub |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Changing to Outlook | kittyhawk | Outlook - General Queries | 5 | May 19th 06 01:35 AM |
Messages are removed from inbox when new messages are received. | Stumped in Indy | Outlook - Installation | 1 | May 7th 06 10:48 PM |
download messages without deleting messages on server problem | Eric | Outlook - Installation | 1 | March 21st 06 07:21 PM |
Changing computers | Peter Mitchell | Outlook - Installation | 1 | February 20th 06 02:24 PM |
Changing Forms | Denzelior | Outlook - Installation | 3 | February 14th 06 04:14 PM |