Redemption MessageItem SaveAs problem

Y

Yevgen

Hello,

I have problem with Redemption SaveAs method for MessageItem object.

I'm saving items in olTNEF (1025) format. This problem occurs whits
mail items. I'm saving items fro Exchange Server mailboxes. When I'm
saving item of current Logged in to Outlook user "To" property is
saved ok, but when I'm saving items from not Logged in user mailbox
(Additional Exchange mailbox), "To" property is blank. But when I'm
opening this item in Outlook, "To" field is not empty. Also before
executing SaveAs method, I have checked item object and "To" property
is set correctly.

Please consult me with TNEF, also maybe it's a bug of SaveAs method in
Redemption library.

Thank you very much!
 
D

Dmitry Streblechenko

Are you using the MAPIUtils object (which is deprecated)?
Use RDOSession object instead: sets its MAPIOBJECT property to
Application.Session.MAPIOBJECT proeprty from OOM (if you work with it) or
call Logon.
You can then reopen the message using RDOSession.GetMessageFromId, then save
the rerurned message (RDOMail.Save).

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
 
Y

Yevgen

Are you using the MAPIUtils object (which is deprecated)?
Use RDOSession object instead: sets its MAPIOBJECT property to
Application.Session.MAPIOBJECT proeprty from OOM (if you work with it) or
call Logon.
You can then reopen the message using RDOSession.GetMessageFromId, then save
the rerurned message (RDOMail.Save).

I have changed my code. So now I'm using RDOSession object instead of
MapiUtils.
Here is my code:

Dim oMsgItem As Redemption.RDOMail

Set oMsgItem = oRDOSession.GetMessageFromID(sItemEntryID)

oMsgItem .SaveAs sSaveAs, lType


Where lType = 1025 (TNEF)

But still I received the same problem. Items from Logged in user
mailbox has "To" field data and items from additional Exchange
mailboxes don't.

What the problem is? How can I fix it?

Thanks!
 
D

Dmitry Streblechenko

Hmmm... Redemption does not create the TNEF attachment itself, it rather
asks MAPI to do that.
How do you open and check the resulting TNEF files?

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
Are you using the MAPIUtils object (which is deprecated)?
Use RDOSession object instead: sets its MAPIOBJECT property to
Application.Session.MAPIOBJECT proeprty from OOM (if you work with it) or
call Logon.
You can then reopen the message using RDOSession.GetMessageFromId, then
save
the rerurned message (RDOMail.Save).

I have changed my code. So now I'm using RDOSession object instead of
MapiUtils.
Here is my code:

Dim oMsgItem As Redemption.RDOMail

Set oMsgItem = oRDOSession.GetMessageFromID(sItemEntryID)

oMsgItem .SaveAs sSaveAs, lType


Where lType = 1025 (TNEF)

But still I received the same problem. Items from Logged in user
mailbox has "To" field data and items from additional Exchange
mailboxes don't.

What the problem is? How can I fix it?

Thanks!
 
Y

Yevgen

Hmmm... Redemption does not create the TNEF attachment itself, it rather
asks MAPI to do that.
How do you open and check the resulting TNEF files?

--
Dmitry Streblechenko (MVP)http://www.dimastr.com/
OutlookSpy  - Outlook, CDO
and MAPI Developer Tool




I have changed my code. So now I'm using RDOSession object instead of
MapiUtils.
Here is my code:

Dim oMsgItem As Redemption.RDOMail

Set oMsgItem = oRDOSession.GetMessageFromID(sItemEntryID)

oMsgItem .SaveAs sSaveAs, lType

Where lType = 1025 (TNEF)

But still I received the same problem. Items from Logged in user
mailbox has "To" field data and items from additional Exchange
mailboxes don't.

What the problem is? How can I fix it?

Thanks!

Hello Dmitry,

There is 2 variants how I'm opening these files.

1. Simple through text editor. and when you will compare 2 files you
will see that one of them contains "To:" information, another one not.
2. I have special application which open this files through Outlook.
Here is sample code:

Set oOlItem = oFolder.Items.Add(olPostItem)

Set oSafeItem = CreateObject("Redemption.SafeMailItem")

Set oOlItem = oOutlook.CreateItemFromTemplate(sSaveDir &
MESSAGE_TEMP_FILE, oFolder)

oOlItem.Save

Set oSafeItem.Item = oOlItem

oSafeItem.Import sSaveDir & MESSAGE_TEMP_FILE, iType

oSafeItem.Save

StrEntryID = oSafeItem.EntryID

Set oOlItem = Nothing
Set oSafeItem = Nothing

Set oSafeItem = oNamespace.Session.GetItemFromID(StrEntryID,
oFolder.StoreID)

oSafeItem.Display

So with both variants I have the same result. I think the easiest way
to check if the "TO:" information is saved is to compare 2 files with
any compare utility.

Thank you for helping.
 
D

Dmitry Streblechenko

Hmmm... Normally, the PR_DISPLAY_TO property is not saved at all since it is
computed from the contents of the recipeints table.
Does it work if you import teh TENF file using RDOMail rather than
MailItem/SafeMailItem, which may overwrite the imported recipients.

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
Hmmm... Redemption does not create the TNEF attachment itself, it rather
asks MAPI to do that.
How do you open and check the resulting TNEF files?

--
Dmitry Streblechenko (MVP)http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool




I have changed my code. So now I'm using RDOSession object instead of
MapiUtils.
Here is my code:

Dim oMsgItem As Redemption.RDOMail

Set oMsgItem = oRDOSession.GetMessageFromID(sItemEntryID)

oMsgItem .SaveAs sSaveAs, lType

Where lType = 1025 (TNEF)

But still I received the same problem. Items from Logged in user
mailbox has "To" field data and items from additional Exchange
mailboxes don't.

What the problem is? How can I fix it?

Thanks!

Hello Dmitry,

There is 2 variants how I'm opening these files.

1. Simple through text editor. and when you will compare 2 files you
will see that one of them contains "To:" information, another one not.
2. I have special application which open this files through Outlook.
Here is sample code:

Set oOlItem = oFolder.Items.Add(olPostItem)

Set oSafeItem = CreateObject("Redemption.SafeMailItem")

Set oOlItem = oOutlook.CreateItemFromTemplate(sSaveDir &
MESSAGE_TEMP_FILE, oFolder)

oOlItem.Save

Set oSafeItem.Item = oOlItem

oSafeItem.Import sSaveDir & MESSAGE_TEMP_FILE, iType

oSafeItem.Save

StrEntryID = oSafeItem.EntryID

Set oOlItem = Nothing
Set oSafeItem = Nothing

Set oSafeItem = oNamespace.Session.GetItemFromID(StrEntryID,
oFolder.StoreID)

oSafeItem.Display

So with both variants I have the same result. I think the easiest way
to check if the "TO:" information is saved is to compare 2 files with
any compare utility.

Thank you for helping.
 
Y

Yevgen

Hmmm... Normally, the PR_DISPLAY_TO property is not saved at all since itis
computed from the contents of the recipeints table.
Does it work if you import teh TENF file using RDOMail rather than
MailItem/SafeMailItem, which may overwrite the imported recipients.

--
Dmitry Streblechenko (MVP)http://www.dimastr.com/
OutlookSpy  - Outlook, CDO
and MAPI Developer Tool













Hello Dmitry,

There is 2 variants how I'm opening these files.

1. Simple through text editor. and when you will compare 2 files you
will see that one of them contains "To:" information, another one not.
2. I have special application which open this files through Outlook.
Here is sample code:

Set oOlItem = oFolder.Items.Add(olPostItem)

Set oSafeItem = CreateObject("Redemption.SafeMailItem")

Set oOlItem = oOutlook.CreateItemFromTemplate(sSaveDir &
MESSAGE_TEMP_FILE, oFolder)

oOlItem.Save

Set oSafeItem.Item = oOlItem

oSafeItem.Import sSaveDir & MESSAGE_TEMP_FILE, iType

oSafeItem.Save

StrEntryID = oSafeItem.EntryID

Set oOlItem = Nothing
Set oSafeItem = Nothing

Set oSafeItem = oNamespace.Session.GetItemFromID(StrEntryID,
oFolder.StoreID)

oSafeItem.Display

So with both variants I have the same result. I think the easiest way
to check if the "TO:" information is saved is to compare 2 files with
any compare utility.

Thank you for helping.

I have tried to run Import function using Redemption.RDOMail object
and result is the same. For files from main Exchange folder "To:"
field is OK, but for files from additional Exchange folders "To:"
field is empty.

Do you have some ideas how I can solve this problem. Maybe somehow add
to information in TNEF file programmatic. When I'm saving object to
file, object contain "To:" information and I can get it.

Best Regards,
Yevgeniy Vershynin.
 
Y

Yevgen

I have tried to run Import function using Redemption.RDOMail object
and result is the same. For files from main Exchange folder "To:"
field is OK, but for files from additional Exchange folders "To:"
field is empty.

Do you have some ideas how I can solve this problem. Maybe somehow add
to information in TNEF file programmatic. When I'm saving object to
file, object contain "To:" information and I can get it.

Best Regards,
Yevgeniy Vershynin.

Hello Dmitry,

I have found nice function OpenTnefSreamEx to open Tnef files and
AddProps function to add different properties to it. How do you think,
is it possible to add "To:" field information using these functions?
If yes, can you give me a sample, how can I use these functions in
VisualBasic 6 program, because now I don't know how to do it even to
test this idea.

Thanks a lot!
 
Y

Yevgen

I have tried to run Import function using Redemption.RDOMail object
and result is the same. For files from main Exchange folder "To:"
field is OK, but for files from additional Exchange folders "To:"
field is empty.

Do you have some ideas how I can solve this problem. Maybe somehow add
to information in TNEF file programmatic. When I'm saving object to
file, object contain "To:" information and I can get it.
 
Y

Yevgen

Hello Dmitry,

I have found nice function OpenTnefSreamEx to open Tnef files and
AddProps function to add different properties to it. How do you think,
is it possible to add "To:" field information using these functions?
If yes, can you give me a sample, how can I use these functions in
VisualBasic 6 program, because now I don't know how to do it even to
test this idea.

Thanks a lot!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top