Office365 से मीटिंग निमंत्रण कैसे प्राप्त करें, ताकि उन्हें पार्स किया जा सके और एक कैलेंडर में जोड़ा जा सके?


10

ICalendar (.ics या .ical) मीटिंग आमंत्रण को outlook.office365.com से कैसे प्राप्त करें, ताकि उन्हें पार्स किया जा सके और एक कैलेंडर में जोड़ा जा सके (जैसे कि रिमाइंड + वियर्ड)?

मैंने एक उत्तर के लिए लंबे और कठिन खोज की है, लेकिन कोई भी नहीं मिला है, इसलिए मुझे आश्चर्य है कि अगर मैं अभी कुछ तुच्छ याद कर रहा हूं।

मैं फेडोरा 20 (हाइजेनबग) पर ऑफलाइनआईएमएपी 6.5.5 के साथ म्यूट 1.5.22 का उपयोग कर रहा हूं।

वहाँ कई लिपियों के प्रारूप में iCalendar संदेशों को पार्स करने के लिए हैं जिन्हें कैलेंडर में आयात किया जा सकता है। यह मेरी समस्या नहीं है। मेरी समस्या यह है कि मुझे iCalendar संदेश भी नहीं मिल रहे हैं, इसलिए मेरे पास पार्स करने के लिए कुछ भी नहीं है।

एक मीटिंग आमंत्रण मेरे इनबॉक्स में बेस 64 एनकोडेड टेक्स्ट / html संदेश के रूप में आता है। यह एक मल्टीपार्ट संदेश नहीं है और कोई अटैचमेंट नहीं हैं । संदेश के मुख्य भाग में Microsoft Outlook Web Access (OWA) का लिंक होता है। लिंक का अनुसरण करने से मुझे वेबमेल पर ले जाने के अलावा कुछ भी नहीं लगता है। बाकी ईमेल बॉडी में मीटिंग आमंत्रण का विवरण होता है।

मैंने निमंत्रण को अग्रेषित करने और अनुलग्नक के रूप में आमंत्रण को अग्रेषित करने का प्रयास किया, लेकिन इनमें से किसी ने भी संदेश के प्रारूप को प्रभावित नहीं किया।

मैंने संदेश के शीर्षलेखों का निरीक्षण किया, लेकिन महत्वपूर्ण होने के नाते कुछ भी नहीं निकला। मैंने उन्हें यहाँ कॉपी किया है, अगर वे किसी से कुछ मतलब रखते हैं:

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

मैंने वेबमेल में संदेश के हेडर का भी निरीक्षण किया। अधिक हेडर (कुछ tnef से संबंधित) थे, लेकिन फिर से, कैलेंडर या निमंत्रण से संबंधित कुछ भी नहीं लगा।

मैंने एक सामान्य ईमेल के हेडर के साथ "मीटिंग इनविट" के हेडर्स की तुलना की। अंतर केवल इतना था कि एक सामान्य ईमेल में एक अतिरिक्त हेडर होता है: "X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply"।

मेरा .offlineimaprc का folderfilter कैलेंडर फ़ोल्डर को सिंक नहीं करने के लिए सेट है। ऐसा इसलिए होता है क्योंकि हर बार जब ऑफलाइनमैप सिंक करने की कोशिश करता है, तो यह कैलेंडर फ़ोल्डर को सिंक करते समय एक ही त्रुटि के सौ से अधिक उदाहरणों में चलेगा: "ERROR: IMAP सर्वर 'रिमोट' में UID के साथ एक संदेश नहीं है [...] । "

कैलेंडर फ़ोल्डर का निरीक्षण करने के लिए पायथन के इमैप्लिब का उपयोग करना:

>>> import imaplib
>>> i = imaplib.IMAP4_SSL("outlook.office365.com", 993)
>>> i.login("NAME@COMPANY.com", "PASSWORD")
('OK', ['LOGIN completed.'])
>>> i.select("Calendar")
('OK', ['159'])
>>> i.fetch(159, "(RFC822)")
('OK', [None])
>>> i.fetch(159, "(RFC822)")

दूसरी बार जब मैं कॉल करता हूं, तो यह एक संदेश देता है: "सर्वर निम्नलिखित संदेश को पुनः प्राप्त नहीं कर सकता है। संदेश को हटाया नहीं गया है। आप आउटलुक या आउटलुक वेब ऐप का उपयोग करके इसे देखने में सक्षम हो सकते हैं। आप संपर्क भी कर सकते हैं। प्रेषक यह जानने के लिए कि संदेश क्या कहता है। "

WebMail में, मैं देखता हूं कि कैलेंडर फ़ोल्डर (कैलेंडर टैब के माध्यम से सुलभ) में संगठन के बाहर दृश्यता की अनुमति है । यह वर्तमान में "साझा नहीं" पर सेट है। अन्य विकल्प "केवल उपलब्धता", "सीमित विवरण", या "पूर्ण विवरण" हैं। अनुमतियों को "पूर्ण विवरण" पर सेट करना और फिर स्वयं को एक मीटिंग आमंत्रण भेजना मीटिंग आमंत्रण के प्रारूप पर कोई प्रभाव नहीं डालता है।

ICalendar संदेश प्राप्त नहीं करने के लिए एक समाधान के रूप में, मेरे पास लाइटनिंग ऐड-ऑन के साथ थंडरबर्ड खुला है। किसी तरह, लाइटनिंग ऐड-ऑन मीटिंग निमंत्रण प्राप्त करना जानता है। संदेश अभी भी पाठ / html के रूप में दिखाई देते हैं, लेकिन थंडरबर्ड की स्थिति पट्टी में एक लिंक है। इस पर क्लिक करने से एक संकेत मिलता है कि यह पूछें कि आमंत्रण को अस्वीकार या स्वीकार करना है या नहीं।

किसी के पास कोई भी विचार है कि आउटलुक 365 से आमंत्रण मिलने के कारण iCalendar संदेशों के बजाय सरल पाठ / html संदेशों के रूप में कैसे आ रहा है? क्या मै कुछ कर सकता हुं? यदि लाइटनिंग ऐड-ऑन निमंत्रण के साथ काम कर सकता है, तो एक समाधान होना चाहिए, जैसे कि माइक्रोसॉफ्ट एक्सचेंज वेब सर्विसेज (ईडब्ल्यूएस) का उपयोग करना। यदि समाधान के लिए मुझे एक उपकरण को कोड करने की आवश्यकता होगी, तो यह हो। सही दिशा में एक धक्का काफी सराहना की जाएगी।


यह लिंक सहायक हो सकता है: blogs.technet.com/b/timmcmic/archive/2013/11/10/…
SEoF

1
@SEoF मैंने आपके उत्तर को एक टिप्पणी में बदल दिया है, जिस लिंक का आप उल्लेख कर रहे हैं। चूंकि आपके उत्तर के रेस में यह बताया गया था कि आपके लिए क्या काम नहीं किया, इसलिए मैंने इसे हटा दिया। कृपया केवल उत्तर पोस्ट करें जो वास्तव में समझाते हैं कि किसी समस्या को कैसे हल किया जाए, बाहरी संसाधनों के लिंक को उत्तर नहीं माना जाता है।
terdon

जवाबों:


3

आप इसे सेट कर सकते हैं इसलिए Office 365 / आउटलुक वेब इंटरफेस के माध्यम से iCalendar प्रारूप में स्वरूपित आमंत्रण भेजता है।

  1. अपने Office 365 खाते में लॉगिन करें
  2. मेल ऐप खोलें (आउटलुक)
  3. ऊपरी दाएं कोने (सेटिंग) में गियर आइकन मारो
  4. खोज बॉक्स में "imap" टाइप करें
  5. "पॉप और IMAP" चुनें
  6. नीचे पीओपी और / या आईएमएपी के लिए "आईकैलेंडर प्रारूप में घटना निमंत्रण भेजें" चुनें।
  7. हिट "सहेजें"

अब आपको iCalendar प्रारूप में सभी निमंत्रण मिलने चाहिए।


मैं निर्यात कार्यक्रम याद दिलाने के लिए अपना स्वयं का कैलेंडर लिखने के लिए ईमेल अटैचमेंट के साथ काम करने की कोशिश कर थक गया। यह सीधे Office-365 API को कॉल करता है और विभिन्न चीजों को आउटपुट कर सकता है, जिसमें फॉर्मेट की गई प्रविष्टियों को याद दिलाना शामिल है। इसे आईहोल (आई हेट आउट लुक) नाम दिया गया है .. github.com/eikenb/ihol
जॉन

1

SEOF द्वारा प्रदान की गई लिंक एक बेहतरीन सुझाव था। ब्लॉग पोस्ट अधूरी है, मेरी राय में, लेकिन यह मुझे सही रास्ते पर ले जाने लगी। मैंने कुछ और खुदाई की और मुझे ialalendar (.ics) प्रारूप में मीटिंग मीटिंग भेजने के लिए Office 365 प्राप्त करने के चरणों की पूरी सूची के साथ आया।

ध्यान दें कि मैं एक व्यवस्थापक नहीं हूं और मुझे किसी भी विशेषाधिकार देने के लिए किसी से संपर्क करने की आवश्यकता नहीं है। एकमात्र चेतावनी यह है कि आपको विंडोज बॉक्स तक पहुंच की आवश्यकता है। एक बार जब आप विंडोज के माध्यम से सेटिंग्स बदल लेते हैं, तो आप पहले जो भी ओएस का उपयोग कर रहे थे उसका उपयोग करके वापस जा सकते हैं। मैंने विंडोज 7 का उपयोग करते हुए सामान्य उपयोगकर्ता के रूप में निम्नलिखित कार्य किया:

  1. Http://www.microsoft.com/en-us/download/details.aspx?id=30653 से Microsoft .NET फ्रेमवर्क डाउनलोड और इंस्टॉल करें
  2. Http://www.microsoft.com/en-us/download/details.aspx?id=40855 से विंडोज मैनेजमेंट फ्रेमवर्क 4.0 (Windows6.1-KB2819745-x64-MultiPkg.msu) इंस्टॉल करें
  3. एक व्यवस्थापक के रूप में PowerShell चलाएँ।
  4. सेट-एक्ज़ीक्यूशन Policy -ExecutionPolicy RemoteSign
  5. $ उपयोगकर्ता-श्रेय = Get-Credential
    • अपना ईमेल पता और पासवर्ड दर्ज करें।
  6. $ सत्र = नई-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $ UserCredential -Authentication बेसिक -AllowRedirection
  7. $ ImportResults = आयात-PSSession $ सत्र
  8. Get-CASMailbox -identity your@EMAIL.ADDRESS | प्रारूप-सूची
  9. सेट- CASMailbox -identity Your@EMAIL.ADDRESS -PopUseProtocolDefaults: $ FALSE -ImapUseProtocolDefaults: $ FALSE -PopForceICalororCalendarRetrievalOption: $ TRUE -ImapForceICalFalendar से संपर्क करें
  10. निकालें-PSSession $ सत्र
  11. सेट-एक्ज़ीक्यूशन Policy -ExecutionPolicy प्रतिबंधित

अब, लिनक्स पर मेरा म्यूट iCalendar (.ics) प्रारूप में मीटिंग आमंत्रण को पुनः प्राप्त कर रहा है।


यह पूरी तरह से काम किया। विस्तृत निर्देशों के लिए धन्यवाद।
जेसन डे

0

ओपी ने पूछा कि वास्तव में क्या नहीं है, लेकिन अगर तीसरे पक्ष के तर्क की अनुमति है, तो शानदार एक्सचेंजहेलिब (अजगर) देखें। अगले 3 महीनों के लिए घटनाओं को लाने के त्वरित पी 3 उदाहरण (ध्यान दें कि आवर्ती आइटम बढ़ा दिए गए हैं):

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='mymail@company.com', password='topsecret')
ACCOUNT = Account(primary_smtp_address='mymail@company.com', 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))

एक और अच्छी लाइब्रेरी है github.com/Narcolapser/python-o365
जॉन एकेनबेरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.