Laden...

Wie kann ich einen Termin in Exchange Online eintragen?

Erstellt von Edzio vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.429 Views
E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 6 Jahren
Wie kann ich einen Termin in Exchange Online eintragen?

Hallo zusammen,

ich habe seither über mein Programm einen "Termin" in den Mailbox Kalender eintragen können, dies habe ich über:


ExchangeService service = new ExchangeService();
service.AutodiscoverUrl(exchange_mailbox, RedirectionUrlValidationCallback);
            Appointment meeting = new Appointment(service);


 meeting.Subject = projektnummer_aus_form1 + "--" + aktuelle_benutzer;
            meeting.Body = "Grobveranschlagte Arbeitszeit für das Projekt >><b>"+projektnummer_aus_form1+"</b><< Seitens der Entwicklung/Konstruktion.<br><br>" + 
                           "Diese Zeit kann jedoch variieren aufgrund sämtlicher Einflüsse wie (Fehlprojektierungen, Wartezeiten, Urlaubszeiten, Krankheitszeiten etc.)";
            //Zeit einstellen
            meeting.IsAllDayEvent = true;
            meeting.Start = startzeit;
            meeting.End = endzeit;
 //Farbe Kategorie einstellen
            meeting.Categories.Add(aktuelle_benutzer);

            //Erinnerung einstellen
            meeting.IsReminderSet = false;
            //meeting.ReminderMinutesBeforeStart = 60;

            // Send the meeting request
            meeting.Save(new FolderId(WellKnownFolderName.Calendar, exchange_mailbox));






 private static bool RedirectionUrlValidationCallback(string redirectionUrl)
        {
            // The default for the validation callback is to reject the URL.
            bool result = false;

            Uri redirectionUri = new Uri(redirectionUrl);

            // Validate the contents of the redirection URL. In this simple validation
            // callback, the redirection URL is considered valid if it is using HTTPS
            // to encrypt the authentication credentials. 
            if (redirectionUri.Scheme == "https")
            {
                result = true;
            }
            return result;
        }

realisiert, hat auch wunderbar funktioniert.

Unsere IT hat aber nun auf Exchange Online umgestellt,
davor war Exchange OnPromise.
Nun bekomme ich dauernd den Fehler, dass AutodiscoverUrl nicht lokalisiert werden kann.
Nach einem Nachfragen in der IT heißt es, dass das nicht mehr geht.

Nach vielem Googeln habe ich auch nichts passendes gefunden.

Weiß zufällig einer von euch etwas, wie ich weiterhin die "Termine" in den Cloudkalender bekomme?

Danke im Voraus.

Gruß Frank

Hinweis von Abt vor 6 Jahren

Thema passt nicht in den Snippet-Bereich, daher in Office verschoben.

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

der Konstruktor kennt i.d.R. noch eine ASMX-Variante - darauf wirst du dann umsteigen müssen. Siehe https://social.technet.microsoft.com/Forums/ie/en-US/29c2d40e-3958-4a84-a9f1-46c078ac5e77/exchange-365-online-and-web-service-ews?forum=onlineservicesexchange

LG

T
708 Beiträge seit 2008
vor 6 Jahren

Autodiscover funktioniert nur, wenn es auch von der IT aktiviert und "redirected" wird. Machbar, aber eben in der Hand der IT.

Man kann aber problemlos die URL manuell in das Property ExchangeServiceUrl übergeben!*Bei der IT erfragen *In OWA nachschauen *Auf gut Glück versuchen: https://outlook.office365.com/EWS/Exchange.asmx

E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 6 Jahren

Hallo zusammen,

ok super danke, das mit dem
https://outlook.office365.com/EWS/Exchange.asmx
funktioniert,
nun steh ich vor einem neuen Problem und zwar bei der Anmeldung.

ExchangeCredentials ECcredentials = new WebCredentials("username", "Passwort");

Der Username ist keine Problem, aber das Passwort.
Ich will nicht statisch mein Passwort und mein Nutzer verwenden, sondern dass der
jeweilige User sich anmeldet.
Kann man das Windowspasswort übergeben (nur übergeben, nicht speichern sonst irgendwas) ohne dass der User sich jedesmal manuell anmelden muss?

P.S.: habe

service.UseDefaultCredentials = true;

probiert geht aber nicht, da der Username nicht passt
ist bei uns name@firma.de

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

du solltest dir schon mal die Doku anschauen...

Dann würdest du sofort sehen, dass man

service.UseDefaultCredentials = true;

nutzen kann.

LG

E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 6 Jahren

Huhu,

mh dann hab ich was überlesen,
also bin ich auf dem richtigen Weg?

Bin halt noch nicht sooo erfahren in vielen Funktionen etc. deshalb vlt auch die "noobigen" Fragen.

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

sorry - da habe ich nicht genau nachgedacht.

NTLM (das, was du aktuell versuchst) wird gegen Office365 so nichts helfen, da das nur die OnPremise-Server anbieten.

Gemäß https://blogs.msdn.microsoft.com/webdav_101/2015/05/11/best-practices-ews-authentication-and-access-issues/ wirst du (wenn du's vollautomatisiert haben möchtest)
OAuth verwenden müssen (ist entsprechend verlinkt im Artikel).

LG

E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 6 Jahren

hab mich grad ein wenig eingelesen,
das sieht sehr kompliziert aus, da werde ich noch eine Weile benötigen.

Gruß Frank