A Microsoft Outlook email forum. Outlook Banter

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.

Go Back   Home » Outlook Banter forum » Microsoft Outlook Email Newsgroups » Add-ins for Outlook
Site Map Home Register Authors List Search Today's Posts Mark Forums Read Web Partners

Automatically sending and tracking encrypted e-mails. How?



 
 
Thread Tools Search this Thread Display Modes
  #1  
Old April 23rd 08, 10:48 PM posted to microsoft.public.outlook.program_addins,microsoft.public.developer.outlook.addins
Bila
external usenet poster
 
Posts: 3
Default Automatically sending and tracking encrypted e-mails. How?

Hello,

I need to write a small application (C#, .NET 3.5), preferably as
Outlook add-in, that would be able to distribute e-mails with
personalized content to several thousand employees of the company
(internal distribution only). Since the content is sensitive and
contains confidential information all mails need to be encrypted and
possibly signed. Outlook clients of all users are set-up to use
Microsoft Outlook Native encryption/signing. Certificates with public
keys for all users are accessible through LDAP so it is not a problem
to encrypt e-mail content with appropriate certificates, even manually
if required.
A further strict request is that all sent mails need to be "tracked"
and checked for successful delivery so that a detailed status report
can be generated after the mailing batch finishes.

My question is: what would be the most straightforward way to fulfill
these requirements, preferably (but not necessarily) by using already
provided Outlook functionality?

I have tried several approaches already (which I won't list here now
because they could possibly be misleading) but all had their
shortcomings. I'd appreciate to hear some comments/ideas/concept
suggestions from experts in this field and get some pointers to the
right direction.

I will provide further information if requested.

Thank you.

Kind regards,
Mario Bilic
  #2  
Old April 24th 08, 02:16 PM posted to microsoft.public.outlook.program_addins,microsoft.public.developer.outlook.addins
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default Automatically sending and tracking encrypted e-mails. How?

You can't really force signing or encrypting using code, but you can set the
OriginatorDeliveryReportRequested property of a MailItem to force sending
delivery notices.

Other than that I'm not sure what you're asking for.

--
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


"Bila" wrote in message
...
Hello,

I need to write a small application (C#, .NET 3.5), preferably as
Outlook add-in, that would be able to distribute e-mails with
personalized content to several thousand employees of the company
(internal distribution only). Since the content is sensitive and
contains confidential information all mails need to be encrypted and
possibly signed. Outlook clients of all users are set-up to use
Microsoft Outlook Native encryption/signing. Certificates with public
keys for all users are accessible through LDAP so it is not a problem
to encrypt e-mail content with appropriate certificates, even manually
if required.
A further strict request is that all sent mails need to be "tracked"
and checked for successful delivery so that a detailed status report
can be generated after the mailing batch finishes.

My question is: what would be the most straightforward way to fulfill
these requirements, preferably (but not necessarily) by using already
provided Outlook functionality?

I have tried several approaches already (which I won't list here now
because they could possibly be misleading) but all had their
shortcomings. I'd appreciate to hear some comments/ideas/concept
suggestions from experts in this field and get some pointers to the
right direction.

I will provide further information if requested.

Thank you.

Kind regards,
Mario Bilic


  #3  
Old April 24th 08, 06:02 PM posted to microsoft.public.outlook.program_addins,microsoft.public.developer.outlook.addins
Bila
external usenet poster
 
Posts: 3
Default Automatically sending and tracking encrypted e-mails. How?

Hi,

thank you for your reply.

Now to clarify the problems a bit more.

1. Mail encryption and sending:

So now it's clear that encryption can not be enabled programmaticaly
when using MailItem objects but only by displaying the corresponding
Inspector object and then "pushing" the "Encrypt Message" button. Too
bad.
I have chosen a different route by using X509Certificate2 class object
for certificate handling, System.Net.Mail.MailMessage for e-mail
composition and System.Net.Mail.SmtpClient for e-mail sending. Is
there any other way to do this task, preferably one that is more bound
to Outlook so that I can work within Outlook user context instead of
explicitly doing user authentication and credentials management (which
is required for SmtpClient class)?

2. Tracking the delivery status of sent mails

As far as I have out by reading various texts on the web, the only way
to do this is by checking bounce mails, that is report mails.
Current work flow is that after I send all the mails, after a certain
period of time I scan the Inbox to check for report mails by using
ReportItem class (Microsoft.Office.Interop.Outlook). Problem here is
how to bind a sent mail with a corresponding report. A simple idea is
to place a unique ID in the Subject of the sent mail which can later
be used to match it with the subject of the report mail. Is there any
other way of accomplishing this, one that is more elegant and not so
verbose?
Another issue is how to distinguish the type of the ReportItem to know
what exactly happened (Read, Delivered, Undeliverable)? I used the
OutlookSpy tool with "IMessage-GetRecipientTable" to inspect
different ReportItem objects and noticed that they differ in certain
MAPI tags they contain. For example, undelivered mail reports have
PR_NDR_XXX tags while the ones for delivered mails don't have them but
do have PR_DELIVER_TIME. Is this sufficient to distinguish different
ReportItem types (I do not want to parse the content)? If so, how can
I extract those tags programatically (using Redemption, CDO or
whatever else)?

I apologize if my questions seem weird or sensless but this is my
first contact with MAPI/Outlook/SMTP and mailing techologies in
general so I'm just trying however I can to solve the task assigned to
me.

Thanks once again.

Regards,
Mario Bilic

On Apr 24, 3:16 pm, "Ken Slovak - [MVP - Outlook]"
wrote:
You can't really force signing or encrypting using code, but you can set the
OriginatorDeliveryReportRequested property of a MailItem to force sending
delivery notices.

Other than that I'm not sure what you're asking for.

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

"Bila" wrote in message

...

  #4  
Old April 24th 08, 07:22 PM posted to microsoft.public.outlook.program_addins,microsoft.public.developer.outlook.addins
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default Automatically sending and tracking encrypted e-mails. How?

As far as #1 goes, if you use .NET mail classes that has nothing to do with
Outlook and is better addressed somewhere else. I have no idea about that
stuff. Executing a CommandBarButton for encryption is about the only way to
do that in code using Outlook, but you previously said that you were willing
to let the users do it manually. So either way.

I don't think that bounces is any realistic way to go. You cannot rely on
that. I have my server set not to send bounce messages and a lot of Exchange
admins I know also set their servers that way. So totally unreliable is how
I'd describe that. You also said earlier that you were only sending emails
internally so what do Internet bounce messages have to do with that? Use the
property I mentioned to earlier.

--
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


"Bila" wrote in message
...
Hi,

thank you for your reply.

Now to clarify the problems a bit more.

1. Mail encryption and sending:

So now it's clear that encryption can not be enabled programmaticaly
when using MailItem objects but only by displaying the corresponding
Inspector object and then "pushing" the "Encrypt Message" button. Too
bad.
I have chosen a different route by using X509Certificate2 class object
for certificate handling, System.Net.Mail.MailMessage for e-mail
composition and System.Net.Mail.SmtpClient for e-mail sending. Is
there any other way to do this task, preferably one that is more bound
to Outlook so that I can work within Outlook user context instead of
explicitly doing user authentication and credentials management (which
is required for SmtpClient class)?

2. Tracking the delivery status of sent mails

As far as I have out by reading various texts on the web, the only way
to do this is by checking bounce mails, that is report mails.
Current work flow is that after I send all the mails, after a certain
period of time I scan the Inbox to check for report mails by using
ReportItem class (Microsoft.Office.Interop.Outlook). Problem here is
how to bind a sent mail with a corresponding report. A simple idea is
to place a unique ID in the Subject of the sent mail which can later
be used to match it with the subject of the report mail. Is there any
other way of accomplishing this, one that is more elegant and not so
verbose?
Another issue is how to distinguish the type of the ReportItem to know
what exactly happened (Read, Delivered, Undeliverable)? I used the
OutlookSpy tool with "IMessage-GetRecipientTable" to inspect
different ReportItem objects and noticed that they differ in certain
MAPI tags they contain. For example, undelivered mail reports have
PR_NDR_XXX tags while the ones for delivered mails don't have them but
do have PR_DELIVER_TIME. Is this sufficient to distinguish different
ReportItem types (I do not want to parse the content)? If so, how can
I extract those tags programatically (using Redemption, CDO or
whatever else)?

I apologize if my questions seem weird or sensless but this is my
first contact with MAPI/Outlook/SMTP and mailing techologies in
general so I'm just trying however I can to solve the task assigned to
me.

Thanks once again.

Regards,
Mario Bilic


  #5  
Old April 25th 08, 10:27 AM posted to microsoft.public.outlook.program_addins,microsoft.public.developer.outlook.addins
Bila
external usenet poster
 
Posts: 3
Default Automatically sending and tracking encrypted e-mails. How?

On Apr 24, 8:22 pm, "Ken Slovak - [MVP - Outlook]"
wrote:
As far as #1 goes, if you use .NET mail classes that has nothing to do with
Outlook and is better addressed somewhere else. I have no idea about that
stuff. Executing a CommandBarButton for encryption is about the only way to
do that in code using Outlook, but you previously said that you were willing
to let the users do it manually. So either way.

OK, I might have not explained it properly. Under "manually if
required" I meant doing encryption by hand, that is, adding additional
code to handle certificate retrieval via LDAP and e-mail content
encryption instead of letting outlook handle everything automatically.
The end user must not take any additional actions or see any windows
or messages coming from Outlook or whatever else besides my app during
mail sending. Process must be fully automatic. In any case, it's clear
that I need to dump Outlook for this part.


I don't think that bounces is any realistic way to go. You cannot rely on
that. I have my server set not to send bounce messages and a lot of Exchange
admins I know also set their servers that way. So totally unreliable is how
I'd describe that. You also said earlier that you were only sending emails
internally so what do Internet bounce messages have to do with that? Use the
property I mentioned to earlier.

The property is already being used (or similar delivery report
requests when using .NET classes from System.Net.Mail.*) so I am
getting all delivery reports I need, that is not the issue here. What
I am asking is:
- how to programatically bind a certain delivery report to the
original e-mail that has been sent and caused that very same delivery
report to be generated.
- find out the type of the delivery report (Delivered, Read, not
delivered...).

I can iterate through delivery reports (ReportItem) objects from Inbox
but what do I need to do with them to get required information?
I really do not want to parse the delivery report content text and
extract the required information because to me that seems out right
silly. I'd like to do it in a programmatic way and what I found
through OutlookSpy is that PR_NDR_XXX, PR_DELIVER_TIME and
PR_EMAIL_ADDRESS MAPI tags should provide me all information I need.
Do you know how to extract values of those tags using C#? OutlookSpy
obviously can do it but i don't know how does it do it.


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

"Bila" wrote in message

...

  #6  
Old April 25th 08, 01:51 PM posted to microsoft.public.outlook.program_addins,microsoft.public.developer.outlook.addins
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default Automatically sending and tracking encrypted e-mails. How?

If you are using Outlook 2007 you can use the new PropertyAccessor object to
access those MAPI properties. The use of PropertyAccessor is covered in the
Help for the Object Browser in Outlook 2007.

If you are using an earlier version of Outlook there is no PropertyAccessor
or any other way of accessing those properties using the Outlook object
model. You have to use an alternate API. Neither Extended MAPI (C++ or
Delphi only) or CDO 1.21 are supported for managed code. I'd use the
Redemption (www.dimastr.com/redemption) COM wrapper for Extended MAPI, which
can be used with C#. There are lots of code samples out there for using the
Fields collection of an item from Redemption.

--
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


"Bila" wrote in message
...
On Apr 24, 8:22 pm, "Ken Slovak - [MVP - Outlook]"
wrote:
As far as #1 goes, if you use .NET mail classes that has nothing to do
with
Outlook and is better addressed somewhere else. I have no idea about that
stuff. Executing a CommandBarButton for encryption is about the only way
to
do that in code using Outlook, but you previously said that you were
willing
to let the users do it manually. So either way.

OK, I might have not explained it properly. Under "manually if
required" I meant doing encryption by hand, that is, adding additional
code to handle certificate retrieval via LDAP and e-mail content
encryption instead of letting outlook handle everything automatically.
The end user must not take any additional actions or see any windows
or messages coming from Outlook or whatever else besides my app during
mail sending. Process must be fully automatic. In any case, it's clear
that I need to dump Outlook for this part.


I don't think that bounces is any realistic way to go. You cannot rely on
that. I have my server set not to send bounce messages and a lot of
Exchange
admins I know also set their servers that way. So totally unreliable is
how
I'd describe that. You also said earlier that you were only sending
emails
internally so what do Internet bounce messages have to do with that? Use
the
property I mentioned to earlier.

The property is already being used (or similar delivery report
requests when using .NET classes from System.Net.Mail.*) so I am
getting all delivery reports I need, that is not the issue here. What
I am asking is:
- how to programatically bind a certain delivery report to the
original e-mail that has been sent and caused that very same delivery
report to be generated.
- find out the type of the delivery report (Delivered, Read, not
delivered...).

I can iterate through delivery reports (ReportItem) objects from Inbox
but what do I need to do with them to get required information?
I really do not want to parse the delivery report content text and
extract the required information because to me that seems out right
silly. I'd like to do it in a programmatic way and what I found
through OutlookSpy is that PR_NDR_XXX, PR_DELIVER_TIME and
PR_EMAIL_ADDRESS MAPI tags should provide me all information I need.
Do you know how to extract values of those tags using C#? OutlookSpy
obviously can do it but i don't know how does it do it.


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

"Bila" wrote in message

...


 




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
encrypted mails Sam Outlook - Using Forms 0 November 5th 07 06:47 PM
Macros for sending mails automatically on birthdays Amit Gupta Outlook and VBA 0 August 24th 07 01:15 PM
redirecting encrypted mails to another mail address Vinay Outlook - General Queries 2 January 9th 07 02:15 PM
Problem sending encrypted email in OLXP Gee Weez Outlook - General Queries 1 August 2nd 06 06:31 PM
Reading properties of encrypted e-mails Sanjay Singh Outlook and VBA 0 March 10th 06 04:12 AM


All times are GMT +1. The time now is 06:04 AM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2025 Outlook Banter.
The comments are property of their posters.