Добавление встреч в календарь с помощью уведомлений по электронной почте - PullRequest
2 голосов
/ 30 декабря 2011

Мне нужен пример для добавления событий в мои календари по электронной почте.Например, когда я отправляю электронное письмо своим клиентам относительно их назначения, я хочу, чтобы у них была опция в электронном письме, которая позволит им добавлять событие в свой календарь, просто нажимая кнопку или что-то еще.

Есть ли что-нибудь, что кто-то может направить мне на это?

Мне это нужно в основном, чтобы использовать его с coldfusion 9.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

Я бы порекомендовал iCalUs UDF от http://www.cflib.org/udf/icalus

WebDH дает отличный пример здесь .

Вот пример использования CF9, который я быстро собрал, но еще не тестировал.

<cfscript>

    eventStr = {};
    eventStr.organizerName = "John Doe"; //Organizer Name
    eventStr.organizerEmail = "john.doe@email.com"; //Organizer Email
    eventStr.startTime = ParseDateTime("12/30/2011 11:00"); //format: m/d/yyyy HH:mm OR h:mm TT -- this is Eastern time
    eventStr.subject = "Demo Example";
    eventStr.location = "StackOverflow.com";
    eventStr.description = "Example iCalendar using CF9";

    // Display in browser
    //pc = getpagecontext().getresponse();
    //pc.getresponse().setcontenttype('text/calendar');
    //pc.setHeader("Content-Disposition","inline;filename=newAppointment.ics");
    //writeOutput(iCalUS(eventStr));

    //Email
    m = new mail();
    m.setSubject( "Event" );
    m.setTo( "user@email.com" );
    m.setFrom( "me@email.com" );
    m.setServer( "localhost" );   
    //m.addParam( file="#ACCOUNT_TXT_FILE#" );
    m.addPart( type="text", charset="utf-8", wraptext="72", body="Attached is a calendar event..." );
    m.addPart( type="text/calendar" body="#iCalUS(eventStr)#");
    m.send();

</cfscript>

Вот еще один пример ссылка , который показывает, как отправить событие календаря по электронной почте.

1 голос
/ 04 января 2012

Вот очень базовая реализация формата ICS. Он предназначен для доступа через браузер, но было бы довольно академично изменить текстовый файл с расширением ICS и отправить его по электронной почте.

<cfheader name="Content-Disposition" value="attachment; filename=event.ics" />
<cfcontent reset="true" type="text/calendar" />
<cfscript>
// handle all-day events
if (NOT isDate(starttime) OR NOT isDate(endtime)) {
  dtstart=';VALUE=DATE:#dateFormat(eventdate,"yyyymmdd")#';
  dtend=';VALUE=DATE:#dateFormat(dateAdd("d",1,eventdate),"yyyymmdd")#';
} else {
  dtstart=';TZID="Eastern Standard Time":#dateFormat(eventdate,"yyyymmdd")#T#timeFormat(starttime,"HHmmss")#';
  dtend=';TZID="Eastern Standard Time":#dateFormat(eventdate,"yyyymmdd")#T#timeFormat(endtime,"HHmmss")#';
}
</cfscript>

<cfoutput>
BEGIN:VCALENDAR
PRODID:-//Company//Source//EN
VERSION:2.0
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:Eastern Standard Time
BEGIN:STANDARD
DTSTART:16011104T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010311T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
CLASS:PUBLIC
CREATED:#dateFormat(dateAdded,"yyyymmdd")#T#timeFormat(dateAdded,"HHmmss")#Z
DESCRIPTION:#desc#
DTEND#dtend#
DTSTAMP:#dateFormat(dateAdded,"yyyymmdd")#T#timeFormat(dateAdded,"HHmmss")#Z
DTSTART#dtstart#
LAST-MODIFIED:#dateFormat(dateApproved,"yyyymmdd")#T#timeFormat(dateApproved,"HHmmss")#Z
LOCATION:#location#
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=en-us:#title#
TRANSP:OPAQUE
UID:#dateFormat(now(),"yyyymmdd")#T#timeFormat(now(),"HHmmss")#Z@#uniqueID#
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
</cfoutput>
...