Sicos1977 / MsgKit

A .NET library to make MSG files without the need for Outlook
199 stars 55 forks source link

How to add other properties ? #41

Closed rsrini83 closed 5 years ago

rsrini83 commented 5 years ago

Hi,

I have other attributes(PidTag****) which I want to add to the mail item. Is it possible to add these custom attributes ?

--Srinu

Sicos1977 commented 5 years ago

No there is no option implemented to do that. What property/properties do you want to add for what reason?

rsrini83 commented 5 years ago

Hi,

We are extracting attributes from EWS export item format (FastTransferStream). we are able to extract all the attributes, but we would like to export these into Msg format. So we are looking for the provision to add using this framework. Any guidance on how to add these?

Sicos1977 commented 5 years ago

I need to add a method to give that possibility. It's not that hard to do that. I'll see if I can make some time this weekend. Can you give me a list with some properties (and values) that you want to add so that I have some test cases?

Sicos1977 commented 5 years ago

I added a new public method called AddProperty with this you can add custom properties. You need to make sure you add the correct values for the property otherwise it will fail with an exception.

You use it like this:

using (var email = new Email(
        new Sender("peterpan@neverland.com", "Peter Pan"),
        new Representing("tinkerbell@neverland.com", "Tinkerbell"),
        "Hello Neverland subject"))
{
    email.Recipients.AddTo("captainhook@neverland.com", "Captain Hook");
    email.Recipients.AddCc("crocodile@neverland.com", "The evil ticking crocodile");
    email.Subject = "This is the subject";
    email.BodyText = "Hello Neverland text";
    email.BodyHtml = "<html><head></head><body><b>Hello Neverland html</b></body></html>";
    email.Importance = MessageImportance.IMPORTANCE_HIGH;
    email.IconIndex = MessageIconIndex.ReadMail;
    email.Attachments.Add(@"d:\crocodile.jpg");

    // Add a custom property
    email.AddProperty(PropertyTags.PR_AUTO_FORWARDED, true);
    email.AddProperty(PropertyTags.PR_AUTO_FORWARD_COMMENT_W, "This message has been auto forwarded");

    email.Save(@"c:\email.msg");

    // Show the E-mail
    System.Diagnostics.Process.Start(@"c:\email.msg");
}

Make sure that you use Outlook to see if it can open the message. Outlook expect that custom properties are added in the correct way. If you add some custom properties and forget one then you probably get an error in Outlook that says "Can't open message"

rsrini83 commented 5 years ago

Thanks for the API. Will take the changes and will confirm after verification.

Sicos1977 commented 5 years ago

And?

rsrini83 commented 5 years ago

Hi,

My apologies for later reply. I was down with fever for two weeks, so i couldn't verify your changes. Current changes seem to be okay. However, I will not be able to create PropertyTag outside the assembly. As PropertyTag is the internal constructor. I think this also needs to be made it as public, then i'm able to create the property tags and proceed as i want it.

--Srinu