将Outlook展示日历同步到您的日历

时间:2014-08-04 04:46:04

标签: php plugins calendar outlook sync

美好的一天,

我正在使用我自己的日历应用程序进行编码或基本编码,并且我想将我的Outlook日历或sync我的Outlook中的事件添加到我自己的日历中。

这可能吗?如果

我是否可以使用任何好的PHP插件来执行此类操作。

如果

你能解释一下为什么,我能否知道一些替代方案或更好的解决方案来解决我的问题。 ?

谢谢。

1 个答案:

答案 0 :(得分:1)

您熟悉PHP COM对象吗?像下面这样的东西是理想的:

<?php

/**
 * This example uses COM() to Access Appointments
 * Requires Windows, Outlook
 *
 * @author justin DOT carlson AT gmail DOT com
 * @license none/free - sample code
**/

// define appointments array
$appointments = array();

// folder types (calendar, etc)
define('olFolderDeleted', 3);
define('olFolderOutbox', 4);
define('olFolderSent', 5);
define('olFolderInBox', 6);
define('olFolderCalendar', 9);
define('olFolderContacts', 10);
define('olFolderJournal', 11);
define('olFolderNotes', 12);
define('olFolderTasks', 13);
define('olFolderDrafts', 16);

// start instance
$outlook = new COM("Outlook.Application");
$namespace = $outlook->getNameSpace("MAPI");
$namespace->Logon();

// get calendar folder
$calendar = $namespace->GetDefaultFolder(olFolderCalendar);

// gather, sort, and configure entries
$entries = $calendar->Items;
$entries->Sort("[Start]");
$entries->IncludeRecurrences = True;

// search filter, change these YYYY/MM/DD values for your date range
$search = '[Start] >= "YYYY/MM/DD 12:00 am" AND [Start]<= "YYYY/MM/DD 11:59 pm"';

// find entries
$schedule = $entries->Find($search);

while ( ! is_null($schedule) ) {

    $appointment = array();
    $appointment['allday'] = $schedule->AllDayEvent;
    $appointment['subject'] = $schedule->Subject;
    $appointment['hours'] = ($schedule->Duration / 60);
    $appointment['location'] = $schedule->Location;
    $appointment['subject'] = $schedule->Subject;
    $appointment['body'] = $schedule->Body;
    $appointment['categories'] = $schedule->Categories;
    $appointment['start'] = date('m/d/Y h:i:s a', variant_date_to_timestamp($schedule->Start));
    $appointment['end'] = date('m/d/Y h:i:s a', variant_date_to_timestamp($schedule->End));
    $appointment['stamp'] = variant_date_to_timestamp($schedule->Start);
    $appointments[] = $appointment;
    $schedule = $entries->FindNext();

}

// $appointments now contains your entries, enjoy!
?>