ASP İletişim Formu ve Mail Gönderme (CDOSYS)
ASP ile İletişim Formu Yapımı ve SMTP Üzerinden Mail Gönderme (CDOSYS)
Klasik ASP ile geliştirilen web sitelerinde en sık karşılaşılan sorunlardan biri, ziyaretçilerin doldurduğu iletişim formlarının yöneticiye e-posta olarak iletilmesidir. Eski sunucularda kullanılan CDONTS artık desteklenmediği için, güncel standart olan CDOSYS ve SMTP Kimlik Doğrulaması kullanmak zorunludur.
Bu makalede, hem şık bir HTML form tasarımı hem de bu formu %100 çalışan bir şekilde mail atan ASP kod bloğunu paylaşıyorum.
Adım 1: HTML Form Tasarımı
Aşağıdaki kodu iletisim.asp sayfanıza ekleyin. Basit ve temiz bir yapıdadır.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<form action="gonder.asp" method="post"> <div style="margin-bottom:10px;"> <label>Adınız Soyadınız:</label><br> <input type="text" name="adsoyad" required style="width:100%; padding:8px;"> </div> <div style="margin-bottom:10px;"> <label>E-Posta Adresiniz:</label><br> <input type="email" name="email" required style="width:100%; padding:8px;"> </div> <div style="margin-bottom:10px;"> <label>Mesajınız:</label><br> <textarea name="mesaj" rows="5" required style="width:100%; padding:8px;"></textarea> </div> <button type="submit" style="background:#333; color:#fff; padding:10px 20px; border:none;">GÖNDER</button> </form> |
Adım 2: ASP Mail Gönderme Kodu (gonder.asp)
Formun gönderildiği sayfada aşağıdaki kodları kullanmalısınız. Önemli: Kod içerisindeki SMTP ayarlarını kendi hosting firmanızdan aldığınız bilgilerle değiştirmeyi unutmayın.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<% ' Türkçe karakter sorunu olmaması için Response.CharSet = "utf-8" Response.CodePage = 65001 ' Formdan gelen verileri alalım Dim AdSoyad, Email, Mesaj, PostaGovde AdSoyad = Request.Form("adsoyad") Email = Request.Form("email") Mesaj = Request.Form("mesaj") ' Mail içeriğini hazırlayalım PostaGovde = "Sayın Yetkili,<br><br>" & _ "Web sitenizden yeni bir iletişim formu gönderildi.<br>" & _ "<strong>Gönderen:</strong> " & AdSoyad & "<br>" & _ "<strong>E-Posta:</strong> " & Email & "<br>" & _ "<strong>Mesaj:</strong> " & Mesaj ' CDOSYS Nesnesini Oluşturalım Set objMail = Server.CreateObject("CDO.Message") Set objConf = Server.CreateObject("CDO.Configuration") Set Flds = objConf.Fields ' SMTP Ayarları (Burası Hostinginize Göre Değişir) schema = "http://schemas.microsoft.com/cdo/configuration/" Flds.Item(schema & "sendusing") = 2 Flds.Item(schema & "smtpserver") = "mail.siteadiniz.com" ' SMTP Sunucusu Flds.Item(schema & "smtpserverport") = 587 ' Port: Genellikle 587 Flds.Item(schema & "smtpauthenticate") = 1 Flds.Item(schema & "sendusername") = "iletisim@siteadiniz.com" ' Mail Adresiniz Flds.Item(schema & "sendpassword") = "MailSifreniz" ' Şifreniz ' Eğer Gmail veya Yandex kullanıyorsanız aşağıdaki satırın başındaki tırnağı kaldırın: ' Flds.Item(schema & "smtpusessl") = True Flds.Update Set objMail.Configuration = objConf objMail.To = "iletisim@siteadiniz.com" ' Mailin gideceği adres ' Önemli: From kısmı, sendusername ile aynı olmalıdır yoksa hata verir. objMail.From = "iletisim@siteadiniz.com" ' Ziyaretçinin mailini Reply-To (Yanıtla) kısmına ekleyelim ki "Yanıtla" deyince ona gitsin objMail.ReplyTo = Email objMail.Subject = "Yeni İletişim Formu: " & AdSoyad objMail.HTMLBody = PostaGovde objMail.Send ' Temizlik ve Bilgilendirme Set objMail = Nothing Set objConf = Nothing Response.Write "<div style='color:green; font-weight:bold;'>Mesajınız başarıyla gönderildi!</div>" %> |
Dikkat Edilmesi Gerekenler
- Gmail kullanıyorsanız port genellikle 465 veya 587’dir ve “Daha az güvenli uygulama erişimi” izni gerekebilir.
- Yandex Mail için port 465 ve SSL kullanımı (smtpusessl = true) gerekebilir.
- Hosting firmanızın SMTP sunucu adresini (mail.site.com veya smtp.site.com) doğru girdiğinizden emin olun.