outlook.office365.comでiCalendar(.icsまたは.ical)会議の招待を受け取り、解析してカレンダーに追加するにはどうすればよいですか(例:通知+ wyrd)。
長い間答えを見つけようとしましたが、何も見つからず、とても些細なことを逃しているのではないかと思います。
私はFedora 20(Heisenbug)でMutt 1.5.22とOfflineIMAP 6.5.5を使用しています。
iCalendarメッセージをカレンダーにインポートできる形式に解析するために使用できる多くのスクリプトがあります。これはいいえ私の質問。私の問題は、iCalendarメッセージも受け取らず、解析できないことです。
会議の招待状は、Base64でエンコードされたテキスト/htmlメッセージとして自分の受信トレイに到着します。これはいいえマルチパートメッセージがあります添付ファイルなし。メッセージ本文には、Microsoft Outlook Web Access(OWA)へのリンクが含まれています。リンクをクリックすると、WebMailに移動する以外は何もしないようです。メール本文の残りの部分には、会議の招待に関する指示が含まれています。
招待状を転送して添付ファイルとして転送しようとしましたが、どちらもメッセージ形式には影響しません。
メールヘッダーを確認しましたが、重要なコンテンツが見つかりませんでした。誰にでも理解できるようにここにコピーしています。
Received: from [...] by [...] with Microsoft SMTP Server (TLS) id
[...] via Mailbox Transport; [timestamp]
Received: from [...] by [...] with Microsoft SMTP Server (TLS) id
[...]; [timestamp]
Received: from [...] by [...] with Microsoft SMTP Server (TLS) id
[...]; [timestamp]
Received: from [...] by [...] with mapi id [...]; [timestamp]
From: [meeting organiser]
To: [meeting attendees]
Subject: [meeting subject]
Thread-Topic: [meeting subject]
Thread-Index: [...]
Sender: [sender on behalf of meeting organiser]
Date: [timestamp]
Message-ID: <[...]>
Accept-Language: en-US
Content-Language: en-US
X-MS-Exchange-Organization-AuthAs: Internal
X-MS-Exchange-Organization-AuthMechanism: 03
X-MS-Exchange-Organization-AuthSource: [...]
X-MS-Has-Attach:
X-MS-Exchange-Organization-SCL: -1
X-MS-TNEF-Correlator:
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
WebMailのメッセージヘッダも確認しました。より多くのタイトル(一部tnef関連)がありますが、やはりカレンダーや招待状に関する内容はないようです。
「会議への招待」というタイトルを通常のメールのタイトルと比較しました。唯一の違いは、通常の電子メールに「X-Auto-Response-Suppress:DR、RN、NRN、OOF、AutoReply」という追加のヘッダーが含まれていることです。
私の.offlineimaprcのフォルダフィルタは、カレンダーフォルダを同期しないように設定されています。これは、OfflineIMAPが同期しようとするたびにカレンダーフォルダを同期すると、次の同じエラーが100以上発生するためです。 「エラー:IMAPサーバー「リモート」にUIDが「[...]」のメッセージがありません。」
Pythonのimaplibを使用してCalendarフォルダを確認します。
>>> import imaplib
>>> i = imaplib.IMAP4_SSL("outlook.office365.com", 993)
>>> i.login("[email protected]", "PASSWORD")
('OK', ['LOGIN completed.'])
>>> i.select("Calendar")
('OK', ['159'])
>>> i.fetch(159, "(RFC822)")
('OK', [None])
>>> i.fetch(159, "(RFC822)")
2番目にインポートを呼び出すと、次のメッセージが返されます。 "サーバーは次のメッセージを取得できません。メッセージは削除されませんでした。OutlookまたはOutlook Web Appを使用して表示できます。送信者に連絡して内容を確認することもできます。
Webメールで、カレンダーフォルダ(カレンダータブからアクセス可能)に公開権限があることを確認しました。外部組織。現在、「共有しない」に設定されています。他のオプションには、「可用性のみ」、「制限された詳細」、または「完全な詳細」があります。権限を「完全な詳細」に設定してから、自分に会議の招待状を送信しても、会議の招待状の形式には影響しません。
iCalendarメッセージを受け取らない問題を解決するために、Lightningプラグインを使用してThunderbirdを開きました。どういうわけか、Lightningプラグインは会議の招待を受け取る方法を知っています。メッセージはまだtext / htmlとして表示されますが、Thunderbirdのステータスバーにはリンクがあります。これをクリックすると、招待を拒否するか受け入れるかを確認するメッセージが表示されます。
Outlook 365の会議招待状がiCalendarメッセージの代わりに単純なtext / htmlメッセージで届く理由を知っている人はいますか?私ができることはありますか? Lightning プラグインが招待を処理できる場合は、Microsoft EWS (Exchange Web Services) を使用するなどのソリューションが必要です。ソリューション用のツールを作成する必要がある場合は、そうします。正しい方向に進んでくれてありがとう。
答え1
SEoFが提供するリンクは良い提案です。私の考えでは、このブログの投稿は完全ではありませんが、正しい道を案内してくれます。もう少し詳しく調べたところ、Office 365がiCalendar(.ics)形式で会議の招待状を送信できるようにする完全な手順の一覧を思い出しました。
私は管理者ではないので、権限を付与するために誰にも連絡する必要はありません。注目すべき唯一のことは、Windowsボックスにアクセスする必要があることです。 Windowsを介して設定を変更したら、使用していたオペレーティングシステムに戻ることができます。 Windows 7を使用して一般ユーザーとして、次のことを直接実行しました。
- 以下からMicrosoft .NET Framework 4.5をダウンロードしてインストールしてください。http://www.microsoft.com/en-us/download/details.aspx?id=30653。
- 次の場所からWindows Management Framework 4.0(Windows6.1-KB2819745-x64-MultiPkg.msu)をダウンロードしてインストールします。http://www.microsoft.com/en-us/download/details.aspx?id=40855。
- PowerShellを管理者として実行します。
- Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- $UserCredential = 資格情報を取得
- メールアドレスとパスワードを入力してください。
- $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUrihttps://outlook.office365.com/powershell-liveid/-Credentials$UserCredential -AuthenticationBasic -AllowRedirection
- $ImportResults = インポート-PSSession $Session
- CASMailbox IDの取得[Eメール保護]|フォーマットリスト
- CASMailbox-identityの設定[Eメール保護]-PopUseProtocolDefaults:$FALSE -ImapUseProtocolDefaults:$FALSE -PopForceICalForCalendarRetrievalOption:$TRUE -ImapForceICalForCalendarRetrievalOption:$TRUE
- 削除 - PSSession $Session
- Set-ExecutionPolicy -ExecutionPolicy 制限
現在、私のLinuxのmuttはiCalendar(.ics)形式の会議の招待を検索しています。
答え2
Office 365/Outlook が Web インターフェイスを介して iCalendar 形式で招待状を送信するように設定できます。
- Office 365 アカウントにログイン
- メールアプリケーション(Outlook)を開きます。
- 右上隅にある歯車のアイコン(設定)をクリックします。
- 検索ボックスに「imap」と入力してください
- 「ポップとIMAP」を選択してください。
- POPおよび/またはIMAPの場合は、下部の「iCalendar形式でイベントの招待状を送信する」を選択してください。
- 「保存」をクリック
これで、すべての招待状をiCalendar形式で受け取ります。
答え3
OPが要求したものと正確には一致しませんが、サードパーティのロジックが許可されている場合は、優れた点を見てください。交換図書館(Python)。次の3ヶ月間のイベントを取得するためのクイックpy3の例(重複項目が拡張されました):
import arrow # not required, but highly recommended lib for time processing
import base64
from tzlocal import get_localzone
from subprocess import call
from exchangelib import DELEGATE, Account, Credentials, EWSDateTime
CREDENTIALS = Credentials(username='[email protected]', password='topsecret')
ACCOUNT = Account(primary_smtp_address='[email protected]', credentials=CREDENTIALS,
autodiscover=True, access_type=DELEGATE)
def sanitize(p):
'''some .ical files didn't have proper end:vcalendar closure'''
end = 'END:VCALENDAR\n'
s = base64.b64decode(p).decode().replace("\r\n", "\n")
if not s.endswith(end):
s += end
return s
tz = get_localzone()
now = arrow.now()
upper_limit = now.replace(months=+3)
items = ACCOUNT.calendar.view(
start=tz.localize(EWSDateTime(now.year, now.month, now.day)),
end=tz.localize(EWSDateTime(upper_limit.year, upper_limit.month, upper_limit.day)),
)
cals = [] # list of .ical files' contents
for item in items:
cals.append(sanitize(item.mime_content))