2011-05-13 11 views
6

PHPカレンダーから予定をカレンダーに追加したい。見通しは「の.ics」拡張子のファイルを受け入れることができますように、私は、ICSファイルを生成するには、このサンプルコードを試してみました:私はFirefoxでこのコードを実行するとPHPカレンダーにイベントを追加する

<?php 
header("Content-Type: text/Calendar"); 
header("Content-Disposition: inline; filename=calendar.ics"); 
echo "BEGIN:VCALENDAR\n"; 
echo "VERSION:2.0\n"; 
echo "PRODID:www.testMeiCalendar.net\n"; 
echo "METHOD:REQUEST\n"; // requied by Outlook 
echo "BEGIN:VEVENT\n"; 
echo "DTSTART:201T230000\n"; 
echo "DTEND:20110101T010000\n"; 
echo "SUMMARY:New Years Eve Reminder\n"; 
echo "LOCATION:Downtown\n"; 
echo "DESCRIPTION:Let's get together for New Years Eve\n"; 
echo "UID:ABCD1234\n"; 
echo "SEQUENCE:0\n"; 
echo "DTSTAMP:20101125T112600\n"; 
echo "END:VEVENT\n"; 
echo "END:VCALENDAR\n"; 
?> 

はだから今、私はに尋ねるポップアップを得ましたMicrosoft Outlookを使用して生成されたicsファイルを開き、それを開いてOutlookに保存し、最後に予定がOutlookに追加されます。

このプロセスを自動化する方法はありますか?私は、icsファイルを生成して保存する必要なく、Outlookのカレンダーに直接PHPスクリプトからイベントを保存できますか?

+1

のようにそれをやりましたか? – Albireo

+0

ああ..アルビエロ、申し訳ありません。私はそのリンクを削除します。私は現在のシナリオを見るためのリンクを言いました。 –

答えて

3

どのようにサーバーアプリケーションがクライアントアプリケーションにアクセスできる必要がありますか?あなたはカレンダーのエントリーをあなたのクライアントに送ることができます。たぶん、これはあなたのユーザーのために少し快適です。あなたはまだそれを実装していませんでした場合は、あなたのサイトにこの機能を追加する必要がある場合

+0

WEBDAVを使用してExchangeサーバーにイベントを追加してから、ExchangeサーバーをユーザーのOutlookと同期させることはできますか。 –

+0

@ dskanth Sry、その質問に答えることはできません。 – DanielB

-3

できません。

PHPは(主に)Webページを作成するためのスクリプト言語であり、Webサーバー上で動作します。ユーザーのコンピュータを変更することはできません。

ところで、ユーザーのカレンダーにイベントを挿入することはできません。技術的な理由に加えて、セキュリティ上の問題です。他の人のPCを使いこなすことはできません。

+0

まだ2つの選択肢があると感じています。 1つはWEBDAVを使用してPHPからExchange Serverにイベントを追加し、Outlookと同期させることです。 2番目の奇妙なオプションは、PCのOutlookカレンダーイベントフォルダに生成されたicsファイルをアップロードすることです。しかしそれは変だ。最初のオプションを見てみましょう。 –

5
<?php 
/** 
* @category iCalendar 
* @description Basic code for sending an event invitation. 
* @version 1.0 
*/ 

//Create ICAL Content (Google rfc 2445 for details and examples of usage) 
//reference : http://www.mavetju.org/programming/outlook-ics.php 

$message="BEGIN:VCALENDAR 
VERSION:2.0 
CALSCALE:GREGORIAN 
METHOD:REQUEST 
BEGIN:VEVENT 
DTSTART:20110718T121000Z 
DTEND:20110718T131000Z 
DTSTAMP:20110525T075116Z 
ORGANIZER;CN=From Name:mailto:from email id 
UID:12345678 
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Sample:mailto:[email protected] 
DESCRIPTION:This is a test of iCalendar event invitation. 
LOCATION: Kochi 
SEQUENCE:0 
STATUS:CONFIRMED 
SUMMARY:Test iCalendar 
TRANSP:OPAQUE 
END:VEVENT 
END:VCALENDAR"; 

/*Setting the header part, this is important */ 
$headers = "From: From Name <From Mail>\n"; 
$headers .= "MIME-Version: 1.0\n"; 
$headers .= "Content-Type: text/calendar; method=REQUEST;\n"; 
$headers .= '  charset="UTF-8"'; 
$headers .= "\n"; 
$headers .= "Content-Transfer-Encoding: 7bit"; 

/*mail content , attaching the ics detail in the mail as content*/ 
$subject = "Meeting Subject"; 
$subject = html_entity_decode($subject, ENT_QUOTES, 'UTF-8'); 

/*mail send*/ 
if(mail("To email", $subject, $message, $headers)) { 

    echo "sent"; 
}else { 
    echo "error"; 
} 

?> 
+1

これはOutlookでは機能しません。 –

4

は、CalDAVに(http://caldav.calconnect.org/)、WebDAVのにカレンダーの拡張機能を提供します。 DAViCAL(http://www.davical.org/)はあなたの問題に対する解決策を提示しているようだが、私はそれを使っていないのでYMMVを使っている。

3

私はこれを利用して遊んだので、電子メールで送信し、送信元アドレスがOutlookのアカウント設定と同じ電子メールアドレスであれば、Outlookは自動的にカレンダーに追加します。 Outlookがメッセージをダウンロードすると、それが自動的にカレンダーに追加されます。

+0

送信元アドレスを検証するサーバーによっては、これが難しい場合があります。例えば「from = [email protected]」を使用して[email protected]アカウントでメールを送信しようとすると、メールを偽造しようとしていると考えられるため、Gmailは送信を拒否します。自分のアカウントからメールを送信できるようにするには、ユーザーのSMTP認証情報が理想的です。 – Cerin

2

私はこれをPHPで行いました。基本的に別のPHPファイルにインラインイベントを作成しています。あなたはまだそれをしたい人のために余分なライブラリを必要としません。 Outlook/iCal event with PHP

は、基本的にはあなたがあなたの質問にそのようなオフトピックリンクを追加すると、スパムで認識している。この

echo "BEGIN:VCALENDAR\n"; 
echo "VERSION:2.0\n"; 
echo "PRODID:-//YourSite//NONSGML YourSite//EN\n"; 
echo "METHOD:PUBLISH\n"; // required by Outlook 
echo "BEGIN:VEVENT\n"; 
echo "UID:".date('Ymd').'T'.date('His')."-".rand()."-yoursite.com\n"; // required by Outlook 
echo "DTSTAMP:".date('Ymd').'T'.date('His')."\n"; // required by Outlook 
echo "DTSTART:$year"."$month"."$day"."T"."$time\n"; //20120824T093200 (Datetime format required) 
echo "SUMMARY:$summary\n"; 
echo "DESCRIPTION: this is just a test\n"; 
echo "END:VEVENT\n"; 
echo "END:VCALENDAR\n"; 
関連する問題