How to get MailItem.Body without security warning in Outlook 2010

  • Thread starter Thread starter Tom
  • Start date Start date
Status
Not open for further replies.
T

Tom

Hi,

Now I run the following code in Outlook 2010, it shows security warning

dialog. My question is that how to go without the dialog.

MailItem oMailItem

' here it is true that oMailItem is valid object

str = oMailItem.Body ' this line cause security warning

The test is

"A program is trying to acces e-mail address information stored in Outlook.

If this is unexpected, click Deny and verity your antivirus software is

up-to-data.

For more information about e-mail safety and how you might be able to avoid

getting this warning, click help."

Next is a check box for "Allow access for" right is a dropdown combobox "1

minute"

The last is 3 buttons as "Allow", "Deny" and "Help", in which "Deny" is

default one.

=======================================

For what I know now is that when calling oMailItem.Body, Outlook will

extract string text from RTF format stored internally (but I am not sure if

it is so in Outlook 2010). And both Body & HTMLBody are protected now. Any

access to them will prompt warning dialog unless anti-virus program is

up-to-date. Unfortunately our program will assume to running in user's

machine with/without anti-virus applications.

=======================================

I also try to use MAPI library with C++ code. It has no security warning

dialog when I get the email text like code:

IMessage* pMsg;

IStream* pStream;

STATSTG stg = {0};

> ...

// here pMsg & pStream are valid pointers

pMsg->OpenProperty(PR_BODY, &IID_IStream, STGM_READWRITE, 0,

(IUnknown**)&istream);

pStream->Stat(*stg, 0);

int bodysize = stg.cbSize.LowPart; // won't bother checking for >2gb messages!

char* bodybuf = new char[bodysize+1];

ULONG red;

HRESULT hr = pStream->Read(bodybuf, bodysize, &red);

// I am able to get email body text without security warning

// however if I try to change email body, return code is "access deny" like

std::string strtest;

strtest = bodybuf;

strtest += " test";

hr = pStream->->Write(strtest, strtest.GetLength(), &red);

Any suggestion?

Thanks in advance.

Tom
 
The important part is missing: how do you get the MailItem? You need to

derive it from the instrinsic Application object, that is not from an

Application variable created by GetObject or CreateObject.

Best regards

Michael Bauer

Am Thu, 14 Jan 2010 10:21:02 -0800 schrieb Tom:


> Hi,

> Now I run the following code in Outlook 2010, it shows security warning
> dialog. My question is that how to go without the dialog.

> MailItem oMailItem

> ' here it is true that oMailItem is valid object

> str = oMailItem.Body ' this line cause security warning

> The test is
> "A program is trying to acces e-mail address information stored in


Outlook.
> If this is unexpected, click Deny and verity your antivirus software is
> up-to-data.

> For more information about e-mail safety and how you might be able to


avoid
> getting this warning, click help."

> Next is a check box for "Allow access for" right is a dropdown combobox "1
> minute"

> The last is 3 buttons as "Allow", "Deny" and "Help", in which "Deny" is
> default one.

> =======================================
> For what I know now is that when calling oMailItem.Body, Outlook will
> extract string text from RTF format stored internally (but I am not sure


if
> it is so in Outlook 2010). And both Body & HTMLBody are protected now. Any
> access to them will prompt warning dialog unless anti-virus program is
> up-to-date. Unfortunately our program will assume to running in user's
> machine with/without anti-virus applications.

> =======================================
> I also try to use MAPI library with C++ code. It has no security warning
> dialog when I get the email text like code:

> IMessage* pMsg;
> IStream* pStream;
> STATSTG stg = {0};
> ...

> // here pMsg & pStream are valid pointers
> pMsg->OpenProperty(PR_BODY, &IID_IStream, STGM_READWRITE, 0,
> (IUnknown**)&istream);
> pStream->Stat(*stg, 0);
> int bodysize = stg.cbSize.LowPart; // won't bother checking for >2gb


messages!
> char* bodybuf = new char[bodysize+1];
> ULONG red;
> HRESULT hr = pStream->Read(bodybuf, bodysize, &red);

> // I am able to get email body text without security warning
> // however if I try to change email body, return code is "access deny"


like

> std::string strtest;
> strtest = bodybuf;
> strtest += " test";
> hr = pStream->->Write(strtest, strtest.GetLength(), &red);

> Any suggestion?
> Thanks in advance.

> Tom
 
Re: How to get MailItem.Body without security warning in Outlook 2

Hi Michael,

I get the MailItem object as following code sample. The code is written in

C++ with Outlook import.

=======================================

#import "C:\Program Files\Common Files\microsoft shared\OFFICE14\mso.dll"

#import "C:\Program Files\Microsoft Office\Office14\MSOUTL.OLB"

rename_namespace("Outlook")

void test()

{

Outlook::_ApplicationPtr spApp("Outlook.Application");

if (NULL == spApp)

{

hr = spApp.CreateInstance("Outlook.Application");

}

if (spApp)

{

// from now on spApp is the valid Outlook.Application object in VBA

Outlook::_ExplorerPtr spExplorer = spApp->ActiveExplorer();

if (spExplorer)

{

Outlook::SelectionPtr spSel = spEcplorer->GetSelection();

if (spSel && spSel->Count == 1) // if only 1 selection

{

// assume that the selection is a mail item

Outlook::_MailItemPtr spMailItem = spSel->Item(1);

// the following line will bring up the security warning

dialog

::OutputDebugString(spMailItem.Body);

}

}

}

}

=======================================

Other than the security warning dialog and if I click "allow", the output

text is exactly as the content of the email item I selected.

Thanks,

Tom

"Michael Bauer " wrote:



> The important part is missing: how do you get the MailItem? You need to
> derive it from the instrinsic Application object, that is not from an
> Application variable created by GetObject or CreateObject.

> > Best regards
> Michael Bauer
>

>

> Am Thu, 14 Jan 2010 10:21:02 -0800 schrieb Tom:
>
> > Hi,
> > Now I run the following code in Outlook 2010, it shows security warning
> > dialog. My question is that how to go without the dialog.
> > MailItem oMailItem
> > ' here it is true that oMailItem is valid object
> > str = oMailItem.Body ' this line cause security warning
> > The test is
> > "A program is trying to acces e-mail address information stored in

> Outlook.
> > If this is unexpected, click Deny and verity your antivirus software is
> > up-to-data.
> > For more information about e-mail safety and how you might be able to

> avoid
> > getting this warning, click help."
> > Next is a check box for "Allow access for" right is a dropdown combobox "1
> > minute"
> > The last is 3 buttons as "Allow", "Deny" and "Help", in which "Deny" is
> > default one.
> > =======================================
> > For what I know now is that when calling oMailItem.Body, Outlook will
> > extract string text from RTF format stored internally (but I am not sure

> if
> > it is so in Outlook 2010). And both Body & HTMLBody are protected now. Any
> > access to them will prompt warning dialog unless anti-virus program is
> > up-to-date. Unfortunately our program will assume to running in user's
> > machine with/without anti-virus applications.
> > =======================================
> > I also try to use MAPI library with C++ code. It has no security warning
> > dialog when I get the email text like code:
> > IMessage* pMsg;
> > IStream* pStream;
> > STATSTG stg = {0};
> > ...
> > // here pMsg & pStream are valid pointers
> > pMsg->OpenProperty(PR_BODY, &IID_IStream, STGM_READWRITE, 0,
> > (IUnknown**)&istream);
> > pStream->Stat(*stg, 0);
> > int bodysize = stg.cbSize.LowPart; // won't bother checking for >2gb

> messages!
> > char* bodybuf = new char[bodysize+1];
> > ULONG red;
> > HRESULT hr = pStream->Read(bodybuf, bodysize, &red);
> > // I am able to get email body text without security warning
> > // however if I try to change email body, return code is "access deny"

> like
> > std::string strtest;
> > strtest = bodybuf;
> > strtest += " test";
> > hr = pStream->->Write(strtest, strtest.GetLength(), &red);
> > Any suggestion?
> > Thanks in advance.
> > Tom

> .
>
 
Status
Not open for further replies.
Similar threads
Thread starter Title Forum Replies Date
S get current position in message body of mailitem Outlook VBA and Custom Forms 8
Rob Can't save MailItem because the message changed in .pst file Outlook VBA and Custom Forms 0
P MailItem.To Property with VBA not work Outlook VBA and Custom Forms 2
G Event when creating task from mailitem Outlook VBA and Custom Forms 2
A Run-time error '430' on certain emails when trying to set "Outlook.mailitem" as "ActiveExplorer.Selection.Item" Outlook VBA and Custom Forms 2
U Outbox Message Stuck after reading some MailItem Properties with VBA Outlook VBA and Custom Forms 1
oliv- Best practice for catching mailitem.events Outlook VBA and Custom Forms 0
oliv- How to select an mailitem in explorer with "show as conversation" Outlook VBA and Custom Forms 8
JorgeDario How to capture and save the text, when responding a MailItem? Outlook VBA and Custom Forms 3
JorgeDario how to check a MailItem has a digital signature (SMIME) with vba? Outlook VBA and Custom Forms 1
JorgeDario ¿What property of mailitem can be used like primary key? Outlook VBA and Custom Forms 6
S Outlook VBA rule script to process both MailItem and MeetingItem Using Outlook 0
B right click outlook objects in OL2010 acts on current inbox mailitem Using Outlook 6
C MailItem Find method doesn't work Using Outlook 0
C MailItem.SaveAs not working Outlook VBA and Custom Forms 10
G RE:The signature is also inserted if you touch the MailItem. Outlook VBA and Custom Forms 1
B Add signature to MailItem Outlook VBA and Custom Forms 3
C How can I create a new MailItem inside a user folder? Outlook VBA and Custom Forms 4
S Create a new Outlook MailItem in an Outlook folder(not a draft) Outlook VBA and Custom Forms 2
A How to get OOM MailItem Raw data Outlook VBA and Custom Forms 2
S Saved Property of MailItem is copied Outlook VBA and Custom Forms 1
S MailItem Find Method question Outlook VBA and Custom Forms 6
N Getting the attachments in MailItem Outlook VBA and Custom Forms 1
S ->[O2007] Parsing each line of a MailItem HTMLBody? Outlook VBA and Custom Forms 2
T How to get Inspector or MailItem from wordEditor Outlook VBA and Custom Forms 6
A Select the position of an attached file in a HTML mailitem Outlook VBA and Custom Forms 1
M MailItem object has no property for when a reply was sent Outlook VBA and Custom Forms 3
B Insert information to MailItem Outlook VBA and Custom Forms 1
E Properties added to MailItem in ItemSend event visible to recipien Outlook VBA and Custom Forms 1
V Setting HTMLBody of new mailItem Outlook VBA and Custom Forms 1
V How to find mailitem in the inspector is a brand new one Outlook VBA and Custom Forms 2
M Activate "Add digital signature to this massage" on a MailItem? Outlook VBA and Custom Forms 1
K importing EML in MailItem Outlook VBA and Custom Forms 1
A mailitem Send issue Outlook VBA and Custom Forms 5
M Get email address from MailItem.To? Outlook VBA and Custom Forms 6
S UserProperties of MailItem object. Outlook VBA and Custom Forms 3
R How to capture a Mailitem Event Outlook VBA and Custom Forms 3
S How to get RFC822 format message from the MailItem object. Outlook VBA and Custom Forms 4
J Toolbar button to process current mailitem Outlook VBA and Custom Forms 1
D MailItem from an RSS feed Outlook VBA and Custom Forms 2
J Outlook 2007 crashed when pushing send on a displayed mailitem Outlook VBA and Custom Forms 1
N Memory with MailItem.Send Outlook VBA and Custom Forms 1
P Adding a button in a mailitem Outlook VBA and Custom Forms 1
S Reading mailitem after mail is send give runtime error. Outlook VBA and Custom Forms 1
D Max. length of MSO MailItem.EntryID Outlook VBA and Custom Forms 6
R MailItem.Display() error Outlook VBA and Custom Forms 1
R Clone mailitem Outlook VBA and Custom Forms 5
R MailItem Outlook VBA and Custom Forms 2
D Length of the MailItem.EntryID Outlook VBA and Custom Forms 2
M What is the recommendet way to read/write a user defined Field (Named Property) in the MailItem Obje Outlook VBA and Custom Forms 1

Similar threads

Back
Top