Outlook'tan Maillerimi Okumak Hakkında
-
Merhabalar,
Bir otomasyon işim için Outlook hesabımdaki maile erişmem lazım. Bunu yapan bir kodum var ama bazen çalışıyor bazen çalışmıyor. 20 kez çalıştırıyorum 5 defa çalışıyor, 15 defa "LOGIN Failed" gibi yetersiz bir exception mesajı dönüyor. İşin komiği, aynı kod içerisine olmayan bir mail adresi girdiğimde de aynı LOGIN Failed hatasını veriyor. Öncesindeki "client" üzerindeki kontrollerimi yapıyorum debug modda, bir sorun görünmüyor.
Bu konuda desteklerinizi ve fikirlerinizi bekliyorum.
public static async Task<string> SignInAndReceiveMails() { string email = InitializeModel.Config.EMailAddress; string password = InitializeModel.Config.EMailPassword; var imapServer = InitializeModel.Config.IMAPServer; var imapPort = InitializeModel.Config.IMAPPort; using (var client = new ImapClient()) { using (var cancel = new CancellationTokenSource()) { try { Globals.SetApplicationStatus(ResourceLibrary.Enums.Enums.ApplicationStatuses.LoggingIntoMail); await client.ConnectAsync(imapServer, imapPort, true); client.AuthenticationMechanisms.Remove("XOAUTH2"); client.AuthenticationMechanisms.Remove("PLAIN"); await client.AuthenticateAsync(email, password, cancel.Token); GetMailCode(client); await client.DisconnectAsync(true, cancel.Token); if (mailList.FirstOrDefault()?.Code != "NULL") { Globals.SetApplicationStatus(ResourceLibrary.Enums.Enums.ApplicationStatuses.LoggingIntoMailSuccess); return mailList[0].Code; } return string.Empty; } catch (AuthenticationException ex) { Globals.SetApplicationStatus(ResourceLibrary.Enums.Enums.ApplicationStatuses.LoggingIntoMailFailed); await client.DisconnectAsync(true, cancel.Token); throw; } catch (Exception ex) { Globals.SetApplicationStatus(ResourceLibrary.Enums.Enums.ApplicationStatuses.LoggingIntoMailFailed); throw; } } } }IMAPServer : imap-mail.outlook.com
IMAPPort : 993
GodKlaus tarafından 28/Ağu/24 19:30 tarihinde düzenlenmiştir -
Çözümlerde sürekli Microsoft'a uygulamanı kaydetmelisin, oradan OAuth2 ile erişebilirsin diyorlar. Bunu da denedim ama uygulamayı kayıt etsem, benim kişisel e-postama nasıl erişicem ? kişisel hesabımı "User" olarak nasıl kayıt edicem, şirkete eleman alımı gibi görünüyor anladığım kadarıyla.
Ayrıca dediğim gibi bu sistem 5 defa çalışıyor 15 defa failliyor, Exception message sadece "LOGIN Failed". Inner Exception, StackTrace vb hiç bir yerde açıklayıcı mesaj yok. İnternetteki kombinasyonları da denedim, çok verimli sonuç alamadım. Şimdi IP ile mi alakalı acaba diyip modeme reset atıcam :D
-
https://github.com/jstedfast/MailKit/blob/master/ExchangeOAuth2.md
oAuth2 flowu basit aslında, senin kayıt etmiş olduğun uygulama herhangibir outlook kullanıcısı tarafından yetkilendirilebilir ve kullanılabilir oluyor.
Ben de bakındım ama outlook dedikleri gibi basic authun desteğini kesmiş gibi görünüyor, yukarıdaki linkte aslında guide var hocam, günün sonunda bir yerlere refresh-tokenı kaydetmen gerekecek sadece, Thunderbird kullanıyorum mesela, onda sadece yandex imap destekliyor, google ve outlook için oauth kullanıyor.
Edit:
Sanırım refreshtoken'ı otomatik yenileme mekanizması varmış.
mugen tarafından 28/Ağu/24 19:54 tarihinde düzenlenmiştir -
free tier işini görüyorsa uğraşma hiç bunla hallet
-
mugen bunu yazdı
https://github.com/jstedfast/MailKit/blob/master/ExchangeOAuth2.md
oAuth2 flowu basit aslında, senin kayıt etmiş olduğun uygulama herhangibir outlook kullanıcısı tarafından yetkilendirilebilir ve kullanılabilir oluyor.
Ben de bakındım ama outlook dedikleri gibi basic authun desteğini kesmiş gibi görünüyor, yukarıdaki linkte aslında guide var hocam, günün sonunda bir yerlere refresh-tokenı kaydetmen gerekecek sadece, Thunderbird kullanıyorum mesela, onda sadece yandex imap destekliyor, google ve outlook için oauth kullanıyor.
Edit:
Sanırım refreshtoken'ı otomatik yenileme mekanizması varmış.
Hocam ben bu attığın linkten takip ettim ama bir noktada API Permission kısmında bende Office 365 üyeliği olmadığı için sanırım yetkiler görünmüyor. Ben basit personal yazılımcıyım, Okul ya da İş mailim yok. Bu konuyu nasıl halledebilirim ?
-
GodKlaus bunu yazdımugen bunu yazdı
https://github.com/jstedfast/MailKit/blob/master/ExchangeOAuth2.md
oAuth2 flowu basit aslında, senin kayıt etmiş olduğun uygulama herhangibir outlook kullanıcısı tarafından yetkilendirilebilir ve kullanılabilir oluyor.
Ben de bakındım ama outlook dedikleri gibi basic authun desteğini kesmiş gibi görünüyor, yukarıdaki linkte aslında guide var hocam, günün sonunda bir yerlere refresh-tokenı kaydetmen gerekecek sadece, Thunderbird kullanıyorum mesela, onda sadece yandex imap destekliyor, google ve outlook için oauth kullanıyor.
Edit:
Sanırım refreshtoken'ı otomatik yenileme mekanizması varmış.
Hocam ben bu attığın linkten takip ettim ama bir noktada API Permission kısmında bende Office 365 üyeliği olmadığı için sanırım yetkiler görünmüyor. Ben basit personal yazılımcıyım, Okul ya da İş mailim yok. Bu konuyu nasıl halledebilirim ?
Hocam Azure hesabı oluşturup uygulamanı kaydettirdin mi? Uygulamanın kime ait olduğunun pek bir önemi yok aslında, ama işi yaptığın kişilerin Azure hesapları varsa bunun orada olması daha doğru tabi, bu arada ücretsiz hesap sunuyor Azure ama bu özelliği kullanman için bir ücret talep edecek mi bilmiyorum, belki Google gibi belli bir limitin altında ücret yazmaz. Dilersen akşama bir bağlanıp birlikte bakabiliriz oluruna olmazına.
-
Öncelikle @Dark_Lord ve @mugen hocalarıma desteklerinden ötürü teşekkür ediyorum.
Çözümü mail yönlendirmesi yaparak bulduk, Outlook'a düşen mail'i Yandex'e yönlendiren kural ekledik. Bu sayede Yandex'in herhangi bir authentication yapısına takılmadan maili okuyup gerekli işlemleri yapabiliyorum.
Workaround bir çözüm oldu ama şuanda günümü kurtarıyor.
Tekrardan teşekkürler (:
