Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

attachment location

17 views
Skip to first unread message

sophie

unread,
Oct 8, 2008, 5:19:01 AM10/8/08
to
hi, all

I am working on attachment. I don't know how to get the location of a
sending email' attachment.

I want to do some operation before the email be sent.

is "Source Property" works? but when i use it like this
"objMailItem.attachments.Source" or "objMailItem.attachments.item(1).source",
it seems wrong.

pathName property seem work, but when i check the mail attachment item,
pathName is null.

i need help.

thanks.

Sue Mosher [MVP-Outlook]

unread,
Oct 8, 2008, 8:38:01 AM10/8/08
to
A file attached to a message is contained in that message, in the Attachments
collection. Outlook neither knows nor cares about the original location of
the file, which may no longer even exist.

If you want to do some work on that file, you need to save it to the local
drive using the Attachment.SaveAsFile method. You can then modify the file,
remove the original attachment, and add the new version.
--
Sue Mosher, Outlook MVP
Author of Microsoft Outlook 2007 Programming:
Jumpstart for Power Users and Administrators
http://www.outlookcode.com/article.aspx?id=54

sophie

unread,
Oct 8, 2008, 10:20:01 PM10/8/08
to
Thanks sue.
I will try in this way.

khai

unread,
Jan 6, 2009, 10:23:01 PM1/6/09
to
Hi Sue,

The SaveAsFile method works for normail emails. However, when I try to
execute this method on inline attachments (namely, images), I get the
following error:

"Cannot save the attachment. Cannot add the attachment; no data source was
provided."

Could you shed some light on why this is so, and how can I overcome it? Many
thanks in advance.

Ken Slovak - [MVP - Outlook]

unread,
Jan 7, 2009, 9:20:27 AM1/7/09
to
Sue's not available.

In that case there is nothing to go on for Outlook and most likely the
Attachment fields such as PR_ATTACH_FILENAME and such are blank. Are these
images or embedded Outlook objects? In any case about all you could do on a
low level would be to try to extract the attachment binary data and save
that out but you wouldn't know the file type or correct file format so that
wouldn't do much good at all.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"khai" <kh...@discussions.microsoft.com> wrote in message
news:A01308F5-C069-4242...@microsoft.com...

khai

unread,
Jan 9, 2009, 5:53:01 AM1/9/09
to
They are actually inline images. When I try to get the Type, it returns
olByValue.

I realise that I encounter this problem if I use Word 2003 to edit the email
messages (i.e. checkbox found under Tools -> Options -> Mail Format ->
Message Format).

Is there a work around, to ensure that inline images will be saved correctly
even if Word 2003 is chosen as the editor?

Ken Slovak - [MVP - Outlook]

unread,
Jan 9, 2009, 9:36:54 AM1/9/09
to
Not really other than not using inline images.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"khai" <kh...@discussions.microsoft.com> wrote in message

news:76D85CF6-06BB-4C71...@microsoft.com...

khai

unread,
Feb 5, 2009, 2:42:03 AM2/5/09
to
Im still stuck on this problem. It is definitely not possible to force users
to not use inline images as it would be an "un-friendly restriction" to
impose on the users.

I have found out that if Word is being used as the editor, the filename of
the attachment is automatically converted to something else i.e.
image001.jpg, as compared to the actual name of the file when Word is not
being used as the editor. Could this be the reason why the "Cannot save
attachment. Cannot add attachment; no data source was provided" error was
returned?

"Ken Slovak - [MVP - Outlook]" wrote:

Ken Slovak - [MVP - Outlook]

unread,
Feb 5, 2009, 9:56:16 AM2/5/09
to
Using the Outlook object model, except in Outlook 2007, won't allow you to
do what you want. Even in Outlook 2007 if the data for the image is larger
than about 8KB you can't do what you want. You would need to use a lower
level API such as Extended MAPI (C++ or Delphi only), or a MAPI wrapper such
as Redemption (www.dimastr.com/redemption).

If you use a lower level API you can get the attachments collection, which
includes those embedded images. In that case you can get the attachment
property PR_ATTACH_MIME_TAG and read something like "image/jpeg" and the
property PR_ATTACH_EXTENSION and see something like ".jpg". You can use
those to identify the image type. The file name is changed and you can't do
anything about that. It will be something like PR_ATTACH_FILENAME =
"image001.jpg". Once the image is embedded it loses all connection to the
original image file.

Then you'd get the binary data for the image file using the PT_BINARY
property PR_ATTACH_DATA_BIN and read that array of bytes and save the byte
array out to the file system with the name you got from PR_ATTACH_FILENAME.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"khai" <kh...@discussions.microsoft.com> wrote in message

news:6C5C95FA-7B2B-4B20...@microsoft.com...

khai

unread,
Feb 8, 2009, 9:35:01 PM2/8/09
to
Hi,

How exactly can I use the lower API method to get those properties?
Is there a reference you can suggest?

"Ken Slovak - [MVP - Outlook]" wrote:

Ken Slovak - [MVP - Outlook]

unread,
Feb 9, 2009, 9:07:09 AM2/9/09
to
That depends on what you plan to use. Google is your friend.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"khai" <kh...@discussions.microsoft.com> wrote in message

news:69A24506-A71C-4F54...@microsoft.com...

leigh

unread,
Jul 5, 2013, 10:55:12 AM7/5/13
to
khai wrote on 01/06/2009 22:23 ET :
> Hi Sue,
>
> The SaveAsFile method works for normail emails. However, when I try to
> execute this method on inline attachments (namely, images), I get the
> following error:
>
> "Cannot save the attachment. Cannot add the attachment; no data source was
> provided."
>
> Could you shed some light on why this is so, and how can I overcome it? Many
> thanks in advance.
>
> "Sue Mosher [MVP-Outlook]" wrote:
>
>> A file attached to a message is contained in that message, in the Attachments
>> collection. Outlook neither knows nor cares about the original location of
>> the file, which may no longer even exist.
>>
>> If you want to do some work on that file, you need to save it to the local
>> drive using the Attachment.SaveAsFile method. You can then modify the file,
>> remove the original attachment, and add the new version.
>> Sue Mosher, Outlook MVP
>> Author of Microsoft Outlook 2007 Programming:
>> Jumpstart for Power Users and Administrators
>> http://www.outlookcode.com/article.aspx?idT
>>
>>
>>
>>
>> "sophie" wrote:
>>
>> > hi, all
>> >
>> > I am working on attachment. I don't know how to get the location of a
>> > sending email' attachment.
>> >
>> > I want to do some operation before the email be sent.
>> >
>> > is "Source Property" works? but when i use it like this
>> > "objMailItem.attachments.Source" or
>> "objMailItem.attachments.item(1).source",
>> > it seems wrong.
>> >
>> > pathName property seem work, but when i check the mail attachment item,
>> > pathName is null.
>> >
>> > i need help.
>> >
>> > thanks.
>>
>>
>
Hi Khai,
I have the same problem and found this work around.
Try
emailAttachments.Item(i).SaveAsFile(strFile)
Catch ex As COMException
MsgBox(ex.Message)
End Try

The catch allowed the loop through the email attachments to continue and the
file (signature image) that was causing the problem ended up being saved.
0 new messages