dsurucu
Sorunun Kaynağı
Görünen hata iletisi:
5.7.57 Client not authenticated to send mail. Error: 535 5.7.139
Authentication unsuccessful, basic authentication is disabled
Bu, Microsoft’un “Basic Authentication” (kullanıcı adı + parola) yöntemini devre‐dışı bırakması nedeniyle SMTP sunucusunun oturum açma isteğinizi reddettiğini gösterir. 1 Ekim 2022’den itibaren tüm Microsoft 365 kiracılarında ve yeni Outlook.com hesaplarında klasik SMTP kimlik doğrulaması kademeli olarak kapanıyor. (wpmailsmtp.com, learn.microsoft.com)
Dolayısıyla, eski .Credentials = new NetworkCredential("mail","parola")
yaklaşımı artık çalışmıyor. Çözüm, “modern authentication” (OAuth 2.0) veya en azından Uygulama Parolası (App Password) kullanmaktır.
Çözüm Seçenekleri
| Senaryo | Yapmanız Gereken | Kod İpucu |
| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Outlook.com / Hotmail kişisel hesabı | 1. Microsoft hesabınızda İki Aşamalı Doğrulama (MFA) etkinleştirin.<br>2. “Güvenlik bilgileri ▸ Yöntem ekle ▸ Uygulama parolası” adımlarıyla tek seferlik 16 haneli uygulama parolası oluşturun. (support.microsoft.com) | htm.Credentials = new NetworkCredential("xxx@hotmail.com","UygulamaParolası");
|
| Microsoft 365 kurumsal posta kutusu | 1. Yönetici portalında Authenticated SMTP özelliğini posta kutusu için aktif edin.<br>2. Uygulamadan OAuth 2.0 token alarak kimlik doğrulayın (Basic tamamen kapalıdır). | Aşağıdaki MailKit örneği modern kimlik doğrulamayı gösterir. |
| Alternatif (Microsoft Graph) | SMTP yerine Microsoft Graph SendMail
çağrısını kullanarak tamamen HTTP/JSON üzerinden mail atabilirsiniz. | GraphServiceClient
kullanılır; SMTP gerekmiyor. |
Örnek Kodu – MailKit + OAuth 2.0
Kurumsal Microsoft 365 senaryosu için:
using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
using MailKit.Security.OAuth2;
var message = new MimeMessage();
message.From.Add(MailboxAddress.Parse("xxx@contoso.com"));
message.To.Add(MailboxAddress.Parse("xxx@contoso.com"));
message.Subject = "Test mesajı";
message.Body = new TextPart("plain") { Text = "Merhaba Dünya" };
// Azure AD'den aldığınız erişim belirteci (access_token)
var accessToken = "<OAuth2_Access_Token>";
using var client = new SmtpClient();
client.Connect("smtp.office365.com", 587, SecureSocketOptions.StartTls);
client.Authenticate(new SaslMechanismOAuth2("xxx@contoso.com", accessToken));
client.Send(message);
client.Disconnect(true);
Token nasıl alınır?
- Azure portalında “Public client/native” türünde bir uygulama kaydedip
email
, SMTP.Send
izinlerini verin.
Microsoft.Identity.Client
(MSAL) kütüphanesiyle AcquireTokenInteractive
/ AcquireTokenSilent
metodlarından biriyle https://outlook.office365.com/.default
kapsamı için token alın.
Outlook / Hotmail Kişisel Hesap – App Password Kullanımı
MailMessage msg = new MailMessage("xxx@hotmail.com","xxx@hotmail.com","Konu","İçerik");
using SmtpClient smtp = new SmtpClient("smtp-mail.outlook.com",587);
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential("xxx@hotmail.com","16 haneli uygulama parolası");
smtp.Send(msg);
- Sunucu adı: smtp-mail.outlook.com (veya smtp.office365.com)
- Port: 587
- TLS: StartTLS / EnableSsl = true
(support.microsoft.com)
Kontrol Listesi
- SMTP sunucu adı ve portu doğru mu?
- outlook.live.com yerine
smtp-mail.outlook.com
veya smtp.office365.com
kullanın.
- TLS/STARTTLS etkin mi?
EnableSsl = true
olmalı.
- Uygulama parolası ya da OAuth 2.0 tokenı kullanıyor musunuz?
- Authenticated SMTP özelliği posta kutusu için açık mı? (M365 yönetici portalı).
- MFA aktifse normal parola ile oturum açamazsınız; mutlaka app-password ya da OAuth kullanın.
- IP/Firewall tarafında 587 çıkışı engelli değil mi?
Bu adımlardan sonra hatanın (“basic authentication is disabled”) kalıcı olarak çözüldüğünü göreceksiniz. Ek bir sorun yaşarsanız, kullandığınız tenant tipini (Outlook.com mu, Microsoft 365 mi), MFA durumunu ve denediğiniz kimlik doğrulama şekillerini ayrıntılı paylaşmanız tanı koymayı kolaylaştıracaktır.