Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Title: ICS calendar item creation
- // Author: Emily Heiner
- // Date: 2016-12-08
- // This code is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported license.
- // You are free to share and adapt this code for any purposes, commerical and non-commercial,
- // as long as appropriate credit is given, you indicate if changes were made, and you share your
- // modified code. License details can be found at https://creativecommons.org/licenses/by-sa/3.0/
- using System;
- namespace ESH.Utility
- {
- public static class Email
- {
- /// <summary>
- /// Creates an ICS calendar item
- /// </summary>
- /// <param name="startDate">Calendar item Start Date/Time</param>
- /// <param name="endDate">Calendar item End Date/Time</param>
- /// <param name="summary">Calendar item summary</param>
- /// <param name="location">Calendar item Location</param>
- /// <param name="notificationTime">Notification time examples: "30M" (30 Minutes), "1H" (1 Hour), "24H" (24 Hours)</param>
- /// <returns>String containing the ICS calendar item</returns>
- public static string CreateICS(DateTime startDate, DateTime endDate, string summary, string location, string notificationTime)
- {
- string ics = "";
- ics += "BEGIN:VCALENDAR" + Environment.NewLine;
- ics += "VERSION:2.0" + Environment.NewLine;
- ics += "PRODID:-//hacksw/handcal//NONSGML v1.0//EN" + Environment.NewLine;
- ics += "BEGIN:VEVENT" + Environment.NewLine;
- ics += "UID:" + Guid.NewGuid() + Environment.NewLine;
- ics += "DSTAMP;TZID=/US/Pacific:" + ConvertToICSDateTime(DateTime.Now) + Environment.NewLine;
- ics += "DTSTART;TZID=/US/Pacific:" + ConvertToICSDateTime(startDate) + Environment.NewLine;
- ics += "DTEND;TZID=/US/Pacific:" + ConvertToICSDateTime(endDate) + Environment.NewLine;
- ics += "SUMMARY:" + summary + Environment.NewLine;
- ics += "LOCATION:" + location + Environment.NewLine;
- if (notificationTime != null)
- {
- ics += "BEGIN:VALARM" + Environment.NewLine;
- //Notification time examples: 30M (30 Minutes), 1H (1 Hour), 24H (24 Hours)
- ics += "TRIGGER:-PT" + notificationTime + Environment.NewLine;
- ics += "ACTION:DISPLAY" + Environment.NewLine;
- ics += "END:VALARM" + Environment.NewLine;
- }
- ics += "END:VEVENT" + Environment.NewLine;
- ics += "END:VCALENDAR" + Environment.NewLine;
- return ics;
- }
- /// <summary>
- /// Converts a DateTime object into an ICS date/time string
- /// </summary>
- /// <param name="input">DateTime object to convert</param>
- /// <returns>ICS date/time string</returns>
- public static string ConvertToICSDateTime(DateTime input)
- {
- return input.ToString("yyyyMMddTHmmss");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement