SMTP Authentication gerektirmeyen mail serverlarda çoğumuz smtp authentication bilgisi yazmadan maillerimizi gönderiyoruz Tabiki bu yöntemin kullanıldığı sunucular genel olarak spam mail göndermeye uygun diyebiliriz. Standart olarak birçoğumuz smtp serverımızı mail.alanadi.com şeklinde tanımladığımızdan eğer SMTP Authentication gerektirmeden mail gönderilmesine olanak sağlarsak herkesin bizim serverımız üzerinden mail göndermesi mümkün hale gelir. Bu bir güvenlik açığımıdır sorusuna evet diyebilirim çünkü milyonlarca mail gönderen toplu mail gönderme programları mevcut. Peki SMTP Authentication gerektiren sunucularda nasıl mail göndeririz ona değinelim.
ilk olarak işimizi kısayoldan halletmek için web.config dosyamıza system.net nodeunun altındaki mailSettings nodeunda gerekli ayarlarımızı yapalım.
<system.net>
<mailSettings>
<smtp from="info@alanadi.com">
<network port="25" host="mail.alanadi.com" userName="info@alanadi.com" password="sifrem" defaultCredentials="true"/>
</smtp>
</mailSettings>
</system.net>
bu aşamadan sonra kodlarımıza bakalım.
SmtpClient smtpserver = new SmtpClient();
MailAddress mSender = new MailAddress("info@alanadi.com");
MailAddress mTo = new MailAddress("to@alanadi.com");
MailMessage newMail = new MailMessage(mSender, mTo);
smtpserver.Send(newMail);
gördüğünüz gibi bu aşamadan sonra info@alanadi.com adresi ile gönderdiğimiz tüm maillerde mailSettings nodeunda belirttiğimiz SMTP Authentication bilgileri geçerli olacaktır.
Peki ya Web.Config kullanmadan nasıl çözerim bu işi derseniz.
SmtpClient smtpserver = new SmtpClient();
MailAddress mSender = new MailAddress("info@alanadi.com");
MailAddress mTo = new MailAddress("to@alanadi.com");
MailMessage newMail = new MailMessage(mSender, mTo);
System.Net.NetworkCredential auth = new System.Net.NetworkCredential("info@alanadi.com", "sifrem");
smtpserver.UseDefaultCredentials = false;
smtpserver.Credentials = auth;
smtpserver.Send(newMail);
yönetiminide kullanabilirsiniz.