Office 365, uygulama ve sistemlerinizden e-posta göndermek için kullanabileceğiniz güvenli SMTP (Simple Mail Transfer Protocol) hizmeti sunar. Bu rehberde, Office 365 SMTP ayarlarını yapılandırma ve kullanma adımları;
- Temel SMTP Ayarları:
- Sunucu: smtp.office365.com
- Port: 587
- Şifreleme: TLS
- Kimlik doğrulama gerekiyor
- İki Faktörlü Doğrulama etkinse uygulama şifresi oluşturma adımları
- Farklı Programlama Dillerinde Kullanım Örnekleri:
- PHP
- C#
- Python
- Node.js
- Sık Karşılaşılan Sorunlar ve Çözümleri:
- Kimlik doğrulama sorunları
- SMTP erişim engelleri
- TLS hataları
- Gönderim limiti sorunları
- Güvenlik Önerileri
- Exchange Online PowerShell ile SMTP Ayarları Yönetimi
SMTP Ayarları Genel Bilgiler
Office 365 için temel SMTP ayarları şunlardır:
Ayar | Değer |
---|---|
SMTP Sunucu Adresi | smtp.office365.com |
Port | 587 (TLS/STARTTLS) |
Şifreleme Yöntemi | TLS (Transport Layer Security) |
Kimlik Doğrulama | Evet (Kullanıcı adı ve şifre gerekli) |
Kullanıcı Adı | Office 365 e-posta adresiniz (örn: kullanici@sirketiniz.com) |
Şifre | Office 365 hesap şifreniz veya uygulama şifresi |
Uygulama Şifresi Oluşturma (İki Faktörlü Doğrulama Etkinse)
Office 365 hesabınızda iki faktörlü doğrulama (2FA) etkinse, SMTP kimlik doğrulaması için özel bir uygulama şifresi oluşturmanız gerekir:
- https://account.microsoft.com/security adresine gidin ve oturum açın
- “Güvenlik” bölümünde “Gelişmiş güvenlik seçenekleri”ne tıklayın
- “Uygulama şifreleri” bölümüne gidin
- “Yeni uygulama şifresi oluştur” seçeneğini tıklayın
- Oluşturulan şifreyi kaydedin (bu şifre yalnızca bir kez gösterilecektir)
Office 365 SMTP’yi Uygulama ve Sistemlerde Kullanma
PHP ile Kullanım Örneği
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; $mail = new PHPMailer(true); try { //Sunucu ayarları $mail->isSMTP(); $mail->Host = 'smtp.office365.com'; $mail->SMTPAuth = true; $mail->Username = 'kullanici@sirketiniz.com'; $mail->Password = 'sifreniz_veya_uygulama_sifreniz'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587; //Alıcılar $mail->setFrom('kullanici@sirketiniz.com', 'Gönderen Adı'); $mail->addAddress('alici@ornek.com', 'Alıcı Adı'); $mail->addReplyTo('yanit@sirketiniz.com', 'Yanıt Adresi'); //İçerik $mail->isHTML(true); $mail->Subject = 'E-posta Başlığı'; $mail->Body = 'Bu bir <b>HTML</b> mesajıdır.'; $mail->AltBody = 'Bu, HTML mail istemcileri için düz metin sürümüdür'; $mail->send(); echo 'Mesaj gönderildi'; } catch (Exception $e) { echo "Mesaj gönderilemedi. Hata: {$mail->ErrorInfo}"; } ?>
C# ile Kullanım Örneği
using System; using System.Net; using System.Net.Mail; class Program { static void Main() { try { MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient("smtp.office365.com"); mail.From = new MailAddress("kullanici@sirketiniz.com"); mail.To.Add("alici@ornek.com"); mail.Subject = "E-posta Testi"; mail.Body = "Bu bir test e-postasıdır."; SmtpServer.Port = 587; SmtpServer.Credentials = new NetworkCredential("kullanici@sirketiniz.com", "sifreniz_veya_uygulama_sifreniz"); SmtpServer.EnableSsl = true; SmtpServer.Send(mail); Console.WriteLine("E-posta başarıyla gönderildi."); } catch (Exception ex) { Console.WriteLine("Hata oluştu: " + ex.Message); } } }
Python ile Kullanım Örneği
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart sender_email = "kullanici@sirketiniz.com" receiver_email = "alici@ornek.com" password = "sifreniz_veya_uygulama_sifreniz" message = MIMEMultipart("alternative") message["Subject"] = "Office 365 SMTP Test" message["From"] = sender_email message["To"] = receiver_email # E-posta içeriği text = "Merhaba,\nBu bir test e-postasıdır." html = """\ <html> <body> <p>Merhaba,<br> Bu bir <b>test</b> e-postasıdır. </p> </body> </html> """ part1 = MIMEText(text, "plain") part2 = MIMEText(html, "html") message.attach(part1) message.attach(part2) # SMTP sunucusu ile bağlantı kurma try: server = smtplib.SMTP("smtp.office365.com", 587) server.starttls() server.login(sender_email, password) server.sendmail(sender_email, receiver_email, message.as_string()) print("E-posta başarıyla gönderildi!") except Exception as e: print(f"Hata oluştu: {e}") finally: server.quit()
Node.js ile Kullanım Örneği
const nodemailer = require('nodemailer'); // SMTP yapılandırması let transporter = nodemailer.createTransport({ host: 'smtp.office365.com', port: 587, secure: false, // TLS için false auth: { user: 'kullanici@sirketiniz.com', pass: 'sifreniz_veya_uygulama_sifreniz' } }); // E-posta gönderme let mailOptions = { from: '"Şirket Adı" <kullanici@sirketiniz.com>', to: 'alici@ornek.com, alici2@ornek.com', subject: 'Office 365 SMTP Test', text: 'Bu bir test e-postasıdır.', html: '<b>Bu bir test e-postasıdır.</b>' }; transporter.sendMail(mailOptions, (error, info) => { if (error) { return console.log('Hata:', error); } console.log('Mesaj gönderildi:', info.messageId); });
Sık Karşılaşılan Sorunlar ve Çözümleri
1. Kimlik Doğrulama Başarısız
Sorun: “5.7.3 Authentication unsuccessful” hatası alıyorsunuz.
Çözüm:
- Kullanıcı adı ve şifrenin doğru olduğundan emin olun
- İki faktörlü doğrulama etkinse uygulama şifresi kullanın
- Hesabınızın kilitli olup olmadığını kontrol edin
2. SMTP Erişimi Engellendi
Sorun: “5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM” hatası alıyorsunuz.
Çözüm:
- Office 365 Admin merkezinden SMTP kimlik doğrulamasının açık olduğundan emin olun
- Admin center > Kullanıcılar > Aktif kullanıcılar > E-posta > Posta uygulamaları yönetimi > SMTP Gönderimi açık olmalıdır
3. TLS Hatası
Sorun: “Could not connect to SMTP host: smtp.office365.com, port: 587” hatası alıyorsunuz.
Çözüm:
- Güvenlik duvarı veya antivirüs programının 587 nolu portu engellememesini sağlayın
- TLS 1.2 veya daha yeni bir sürüm kullandığınızdan emin olun
4. Gönderim Limiti Aşıldı
Sorun: “Sending limits exceeded” hatası alıyorsunuz.
Çözüm:
- Office 365, günlük e-posta gönderim limitleri içerir (genellikle 10,000 e-posta/gün)
- Toplu e-posta gönderimleri için özel Office 365 e-posta hizmetlerini kullanmayı düşünün
Güvenlik Önerileri
- Şifreleri Kodunuzda Saklamayın: Çevresel değişkenler veya güvenli yapılandırma yönetimi kullanın
- IP Kısıtlamalarını Kullanın: Office 365 Admin merkezinden SMTP erişimine izin verilen IP adreslerini belirleyin
- Düzenli Denetim: Office 365 Güvenlik ve Uyumluluk merkezinden SMTP kullanımını düzenli olarak izleyin
- SPF, DKIM ve DMARC Kayıtlarını Yapılandırın: E-postalarınızın güvenliğini ve teslim edilebilirliğini artırmak için bu DNS kayıtlarını yapılandırın
Exchange Online PowerShell ile SMTP Ayarlarını Yönetme
SMTP ayarlarını yönetmek için Exchange Online PowerShell modülünü kullanabilirsiniz:
# Exchange Online PowerShell modülünü yükleme Install-Module -Name ExchangeOnlineManagement # Exchange Online'a bağlanma Connect-ExchangeOnline -UserPrincipalName admin@sirketiniz.com # Bir kullanıcının SMTP ayarlarını kontrol etme Get-CASMailbox -Identity kullanici@sirketiniz.com | Select SmtpClientAuthenticationDisabled # SMTP kimlik doğrulamasını etkinleştirme Set-CASMailbox -Identity kullanici@sirketiniz.com -SmtpClientAuthenticationDisabled $false
Office 365 SMTP hizmeti, uygulamalarınız ve sistemleriniz için güvenilir bir e-posta gönderim altyapısı sunar. Bu rehberdeki ayarları ve örnekleri kullanarak, çeşitli programlama dillerinde ve platformlarda Office 365 SMTP hizmetini kolayca entegre edebilirsiniz.
Modern uygulamalar için Graph API ve Microsoft 365 SDK’larını kullanmak da alternatif bir yaklaşım olabilir, özellikle daha karmaşık e-posta işlemleri yapmanız gerekiyorsa bu seçenekleri değerlendirebilirsiniz.