Problem with saving a mail with a lot of recipients

T

toni santa

Hi,
when saving a mail with a lot of recipients I receive an 'out of memory'
error. OL2003. Is this a bug of MAPI implemented by OL? See (nonsens)code
below to reproduce it.
best regards
Toni

Sub mailtest()
Dim myItem As MailItem
Set myolapp = CreateObject("Outlook.Application")
Set myItem = myolapp.CreateItem(olMailItem)
For i = 1 To 2300
Set myRecipient = myItem.Recipients.Add("[smtp:santaxf@dnetxxyyzz" &
i & ".com]")
Next
myItem.Display
myItem.SaveAs "c:\temp\test.msg", olMSG
End Sub
 
S

Sue Mosher [MVP-Outlook]

You might try running Recipients.ResolveAll before you try to save.

I can't imagine what the purpose of your approach is, though.
--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
T

toni santa

Hi Sue,
many thanks. But the ResolveAll doesn't resolve the problem.
The approach in the real world is that the email-addresses are taken from a
database and all the recipients receive a periodically information. After
sending the email, it is saved and in the database I create a link to the
saved email so still after some year I 'll know who received which mail.
The stupid VBA sample I created only to reproduce / show / explain the
problem.
best regards
Toni

"Sue Mosher [MVP-Outlook]" <[email protected]> ha scritto nel messaggio
You might try running Recipients.ResolveAll before you try to save.

I can't imagine what the purpose of your approach is, though.
--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
S

Sue Mosher [MVP-Outlook]

IMO, the real problem is that a single message with hundreds of recipients is not the best way to manage this email nor to track who received what mailing. A better approach would be to use the database as the data source for a Word mail merge to email and to track who received the mailing within the database itself.

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers


toni santa said:
Hi Sue,
many thanks. But the ResolveAll doesn't resolve the problem.
The approach in the real world is that the email-addresses are taken from a
database and all the recipients receive a periodically information. After
sending the email, it is saved and in the database I create a link to the
saved email so still after some year I 'll know who received which mail.
The stupid VBA sample I created only to reproduce / show / explain the
problem.
best regards
Toni

"Sue Mosher [MVP-Outlook]" <[email protected]> ha scritto nel messaggio
You might try running Recipients.ResolveAll before you try to save.

I can't imagine what the purpose of your approach is, though.

toni santa said:
Hi,
when saving a mail with a lot of recipients I receive an 'out of memory'
error. OL2003. Is this a bug of MAPI implemented by OL? See (nonsens)code
below to reproduce it.
best regards
Toni

Sub mailtest()
Dim myItem As MailItem
Set myolapp = CreateObject("Outlook.Application")
Set myItem = myolapp.CreateItem(olMailItem)
For i = 1 To 2300
Set myRecipient = myItem.Recipients.Add("[smtp:santaxf@dnetxxyyzz"
&
i & ".com]")
Next
myItem.Display
myItem.SaveAs "c:\temp\test.msg", olMSG
End Sub
 
D

Dmitry Streblechenko

Yes, a large number of recipients is definitely a problem in most MAPI
providers.
For the MSG files, things start breaking apart when you have more than
100-200 recipients
<plug>
Redemption (url below) saves MSG files with a large # of recipients just
fine by creating an MSG file (which is really an OLE storage file) in a
slightly different format, which is still perfetcly readable by Outlook in
Windows 2000 and above.
Try to replace the following line

myItem.SaveAs "c:\temp\test.msg", olMSG

with

set sItem = CreateObject("Redemption.SafeMailItem")
sItem.Item = myItem
sItem.SaveAs "c:\temp\test.msg", olMSG

</plug>

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

toni santa said:
Hi Sue,
many thanks. But the ResolveAll doesn't resolve the problem.
The approach in the real world is that the email-addresses are taken from
a database and all the recipients receive a periodically information.
After sending the email, it is saved and in the database I create a link
to the saved email so still after some year I 'll know who received which
mail.
The stupid VBA sample I created only to reproduce / show / explain the
problem.
best regards
Toni

"Sue Mosher [MVP-Outlook]" <[email protected]> ha scritto nel
messaggio You might try running Recipients.ResolveAll before you try to save.

I can't imagine what the purpose of your approach is, though.
--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers


toni santa said:
Hi,
when saving a mail with a lot of recipients I receive an 'out of memory'
error. OL2003. Is this a bug of MAPI implemented by OL? See (nonsens)code
below to reproduce it.
best regards
Toni

Sub mailtest()
Dim myItem As MailItem
Set myolapp = CreateObject("Outlook.Application")
Set myItem = myolapp.CreateItem(olMailItem)
For i = 1 To 2300
Set myRecipient = myItem.Recipients.Add("[smtp:santaxf@dnetxxyyzz"
&
i & ".com]")
Next
myItem.Display
myItem.SaveAs "c:\temp\test.msg", olMSG
End Sub
 

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