I'm building a web application that sends meeting requests to user's Outlook. Every meeting request is created with a virtual organiser. Then, I have a service that is polling the virtual organiser's pop3 inbox to retreive attendees response to the meeting request (Accept/Decline/Propose new time).
All the information is parsed using the ICal string that outlook sends. Now I'm able to detect if an attendee has accepted or declined easily. I can also detect if the attendee proposed a new time but my problem is that there is no where in the ICal string I can fin the actual new time proposed, except in the email message, which is something I really don'T want to parse :)
Anybody knows where I can find the new time proposed without parsing the email message itself?
thanks
I don't know how Outlook does these things, but the proper way to propose a change to the appointment date is:
List item
You send a METHOD:REQUEST, not a METHOD:REPLY.
You identify the appointment you are referring to via the UID property.
If you change the DTSTART, you propose to change the start date (DTEND for the end date...).
This is explained in iTIP, RFC 2446, 3.2.2.1, "Rescheduling an event"
So the information you need should be in the ICAL file
Related
I have a team that rotates support but needs to send out calendar invites with a non changing group of users it needs to be sent to and CC'ed to. Everything I find online is for personal appointments and not calendar events. I have a template for the subject and body of the email and would like a template that users can just click and open the event in outlook and change the dates only.
Maybe I misunderstood your question, but the iCalendar format is only intended to propagate an existing event. For what you want, you need to create an event.
I can programmatically create an email with an .ics file attached. The email gets sent, the recipient clicks the .ics attachment to add it to their calendar. This is easily done.
I want to try and make Outlook behave a little different. When the user previews the message it detects that its calendar type and throws a prompt asking the user to take some action. This action decides if it gets pushed into the calendar. In a perfect world to have accept/reject/ignore options would be super sweet. Is it possible to construct/send and email in such a way that Outlook can treat it different from a standard email? E.G perhaps altering the type (CONTENT-TYPE:text/calendar)?
Note - I have seen a solution where the body contains a link to the .ics file informing the user about the calendar invite details. It then has a click here to Accept. This is nice because the .ics file does not have to be attached.
I am workign in VBScript/VBS world although Im not sure this is all that important. Has anybody done this is any sense. Is it even possible?
edited:
I ended up using the EASendMail component located here it has an autoCalendar property which works really well. It embeds the .ics file as a text/calendar and send the message as a text/calendar. The outcome is perfect, just like it was actually sent from the outlook. It previews with with the action buttons and even loads the meeting in Outlook at tentative waiting for action
Your email needs to follow a proper MIME structure for it to be recognized as an invitation. See Multipart email with text and calendar: Outlook doesn't recognize ics
Outlook currently has a flag in Followup -
Flag for Recipients
which allows to send a future reminder for followup to the recipient.
Although it sends it out as an email at the time when we are setting up this. I am looking for the ability to schedule to send this email in the future instead of at that time.
Thanks.
You can use the DeferredDeliveryTime property of the MailItem class which allows to set a Date indicating the date and time the mail message is to be delivered.
The message goes to the outbox folder and stay there until the correct time to send it.
In my application, i got a situation. I need to send email to all outlook meeting attendees and also have to specify the time at which meeting was scheduled. The problem is, every meeting attendee should get email with time specified in his own time-zone. Question: Is there any way to find time zones of all meeting attendees ?
Welcome to Stackoverflow.
You don't have to worry about specifying the time according to the time-zone of the attendees. Outlook normalizes the time according to the System's local time of the recipient.
Please have a look at this article for more information on how the time is normalized.
So you can send the time of the meeting / appointment according to your local time and outlook automatically sets the meeting / appointment time to the recipient's time.
Please note: this auto normalization is for outlook 2010 and above. Will update the answer as soon as I find the information for other versions of outlook.
Hope this helps.
[UPDATE]
Link to how outlook handles multiple time-zones - this article
I have a mail sniffer program running on an Inbox in Exchange Server 2010 that checks emails at certain intervals. I would like to know if it somehow is possible to programmatically check with EWS (Exchange Web Services) if an email (EmailMessage) is a meeting invite (calendar request) without loading the attachment.
I know I can check if an attachment is an Microsoft.Exchange.WebServices.Data.ItemAttachment and then, after loading the email check if this is an Microsoft.Exchange.WebServices.Data.Appointment. But this only checks if the attachment is an invite. Theoretically someone could forward an email with amongst other thing an email invite. Then the email is really not a meeting invite, just a forwarded email.
Can you know if an email is a meeting invite without loading the attachment? Should this not be possible with EWS, is there an authorative source for this?
Edit: Forwarded emails
This is outside the question, but I originally asked:
Alternatively (but not what I am hoping for), is there a way to know
if an email was forwarded so that I can handle them differently?
This has been answered here. But I still would like to get an answer for my question as this answer only helps creating a workaround for some cases.
Thanks in advance!
You can leverage the EmailMessage Message Class ItemSchema.ItemClass property to determine what type an item is. Here is a snippet to help you out...
FindItemsResults<Item> mailItems = inbox.FindItems(new ItemView(1000) { PropertySet = new PropertySet(ItemSchema.Id, ItemSchema.HasAttachments, ItemSchema.Subject, ItemSchema.ItemClass) });
foreach (EmailMessage message in messageItems)
{
if (message.ItemClass == "IPM.Schedule.Meeting.Request")
// we have a meeting request
}