Bir web sitesinin en çok kullanılan ama en çok ihmal edilen parçası iletişim formudur. Ziyaretçi ürününüzü beğenir, teklif almak ister ve "İletişim" sayfasına gelir. Buradaki formun düzgün çalışması, gönderilen mesajın gerçekten e-posta kutunuza düşmesi ve spam botlarının bu formu bir çöp mesaj musluğuna çevirmemesi, çoğu zaman satışla kayıp arasındaki farktır. WordPress dünyasında bu işi yıllardır en yaygın şekilde çözen eklenti Contact Form 7'dir (kısaca CF7): milyonlarca aktif kurulumu olan, tamamen ücretsiz ve son derece esnek bir araç.
Bu rehberde CF7'yi sıfırdan kurup çalışır hale getireceğiz. Form alanlarını tanımlamaktan e-posta şablonunu doğru ayarlamaya, zorunlu alan doğrulamasından reCAPTCHA ve Akismet ile spam korumasına, en kritik konu olan "formu gönderiyorum ama mail gelmiyor" sorununu SMTP ile çözmeye kadar tüm adımları, kıdemli bir sistem yöneticisinin bir müşteriye anlatacağı sadelikte ele alacağız. Amaç sadece bir form kurmak değil; teslimatı garanti altına alınmış, botlara kapalı, bakımı kolay bir iletişim kanalı oluşturmak.
Contact Form 7 Nedir ve Neden Bu Kadar Yaygın?#
Contact Form 7, WordPress için geliştirilmiş, form oluşturma ve gönderilen verileri e-posta olarak iletme işini yapan açık kaynaklı bir eklentidir. Sürükle-bırak arayüzü olan bazı rakiplerinin aksine CF7, formları basit bir işaretleme (markup) diliyle tanımlatır. İlk bakışta bu "eski usul" gibi görünse de pratikte büyük bir avantajdır: form yapısı metin olarak durduğu için versiyon kontrolüne alabilir, kopyalayıp başka siteye taşıyabilir ve tam olarak ne ürettiğini görebilirsiniz.
CF7'nin bu kadar yaygın olmasının birkaç sebebi var. Birincisi ücretsiz ve reklamsız olması; ikincisi neredeyse tüm tema ve eklentilerle uyumlu çalışması; üçüncüsü ise reCAPTCHA, Akismet, Flamingo gibi resmi eklentilerle genişletilebilir bir ekosisteme sahip olması. Bir WordPress sitesinde iletişim formu ararsanız, büyük olasılıkla arkada CF7 çalışıyordur.
Şunu baştan netleştirelim: CF7 bir "e-posta sunucusu" değildir. Formu oluşturur, doğrular ve gönderilen veriyi WordPress'in wp_mail() fonksiyonuna teslim eder. O mesajın gerçekten karşı tarafa ulaşması ise sunucunuzun e-posta gönderim altyapısına bağlıdır. Bu ayrım, ilerideki "mail gelmiyor" bölümünün de temelini oluşturur. Sitenizin genel eklenti stratejisini merak ediyorsanız temel WordPress eklentileri rehberimize da göz atabilirsiniz.
Kurulum ve İlk Formunuzu Oluşturma#
Kurulum son derece basittir. WordPress yönetim panelinizde Eklentiler > Yeni Ekle yolunu izleyip arama kutusuna "Contact Form 7" yazın, eklentiyi kurup etkinleştirin. Etkinleştirdiğinizde sol menüde İletişim adlı yeni bir bölüm belirir. CF7 kurulur kurulmaz sizin için "İletişim formu 1" adında hazır bir örnek form oluşturur; çoğu ihtiyaç için bu örneği düzenlemek yeterlidir.
Formu sayfaya eklemek için CF7 size bir kısa kod (shortcode) verir. Her formun düzenleme ekranının üstünde şuna benzer bir kod bulunur:
[contact-form-7 id="a1b2c3d" title="İletişim formu 1"]
Bu kodu kopyalayıp iletişim sayfanızın içeriğine yapıştırdığınızda form o noktada görünür. Gutenberg blok editörü kullanıyorsanız "Kısa Kod" bloğu ekleyip bu kodu içine koyabilir; klasik editör kullanıyorsanız doğrudan gövdeye yapıştırabilirsiniz. Bir formu birden çok sayfada gösterebilir, aynı sitede farklı amaçlar için (teklif, destek, kariyer başvurusu) ayrı ayrı formlar oluşturabilirsiniz.
Form düzenleme ekranı dört sekmeden oluşur: Form (alanların tanımlandığı yer), E-posta (gönderim şablonu), Mesajlar (kullanıcıya gösterilen uyarı metinleri) ve Ek Ayarlar. İlk kurulumda en çok zaman geçireceğiniz sekmeler Form ve E-posta olacaktır.
Form Etiketleri (Mail-Tag) ile Alanları Tanımlama#
CF7'de her form alanı bir "form etiketi" ile tanımlanır. Bu etiketler köşeli parantez içinde yazılır ve tipik yapısı [tür* isim opsiyonlar] şeklindedir. Buradaki yıldız (*) alanın zorunlu olduğunu belirtir; isim ise o alanın veri anahtarıdır ve e-posta şablonunda bu isimle çağrılır. Varsayılan formu genişletilmiş, gerçekçi bir örneğe dönüştürelim:
<label>Adınız Soyadınız (zorunlu)
[text* your-name autocomplete:name]</label>
<label>E-posta Adresiniz (zorunlu)
[email* your-email autocomplete:email]</label>
<label>Telefon
[tel your-phone]</label>
<label>Konu
[select your-subject "Genel Bilgi" "Teklif Talebi" "Teknik Destek"]</label>
<label>Mesajınız (zorunlu)
[textarea* your-message]</label>
[acceptance acceptance-1] Kişisel verilerimin işlenmesine
onay veriyorum. [/acceptance]
[submit "Gönder"]
Burada kullandığımız etiketleri kısaca açıklayalım. text ve email metin ve e-posta alanlarıdır; tel telefon için özel bir metin alanıdır; textarea çok satırlı mesaj kutusudur; select açılır liste oluşturur; acceptance ise KVKK/onay kutusu içindir ve onaylanmadan form gönderilemez. submit gönder butonunu üretir. Alan adlarını (your-name, your-email gibi) anlamlı seçmeniz, e-posta şablonunu yazarken işinizi çok kolaylaştırır.
Sık kullanılan başlıca form etiketleri şu tabloda özetlenebilir:
| Etiket | Ürettiği alan | Tipik kullanım |
|---|---|---|
text / text* | Tek satır metin | Ad, soyad, şirket |
email / email* | E-posta girişi + format kontrolü | İletişim adresi |
tel | Telefon (metin tabanlı) | Cep/sabit hat |
textarea | Çok satırlı metin | Mesaj, açıklama |
select | Açılır liste | Konu, departman |
checkbox / radio | Çoklu/tekli seçim | İlgi alanları |
acceptance | Onay kutusu | KVKK, sözleşme onayı |
file | Dosya yükleme | CV, ekran görüntüsü |
submit | Gönder butonu | Formu iletir |
Bir alanı zorunlu yapmak için türün sonuna yıldız eklemeniz yeterlidir: [text your-name] opsiyoneldir, [text* your-name] zorunludur. file etiketiyle dosya kabul ederken, gelen içeriğe güvenmemek ve izin verilen uzantıları filetypes:pdf|docx gibi sınırlamak iyi bir güvenlik alışkanlığıdır.
E-posta Yönlendirme Şablonunu Yapılandırma#
Form alanlarını tanımladıktan sonra sıra en kritik adıma, yani gelen mesajın hangi adrese, nasıl bir şablonla gideceğini belirlemeye gelir. E-posta sekmesinde birkaç alan görürsünüz. Formda tanımladığınız her alan adı burada [your-name] gibi bir "mail-tag" olarak kullanılabilir. Tipik bir yapılandırma şöyle olur:
Kime: [email protected]
Kimden: Siteniz <[email protected]>
Konu: [your-subject] — [your-name] (Web Formu)
Ek başlıklar:
Reply-To: [your-email]
Mesaj gövdesi:
Yeni bir iletişim formu mesajı alındı:
Ad Soyad : [your-name]
E-posta : [your-email]
Telefon : [your-phone]
Konu : [your-subject]
Mesaj:
[your-message]
--
Bu mesaj [_site_title] sitesindeki iletişim formundan
gönderildi. Gönderen IP: [_remote_ip]
Burada dikkat edilmesi gereken en önemli kural şudur: Kimden (From) adresi mutlaka kendi alan adınızdan olmalıdır. Yeni başlayanların en sık yaptığı hata, "Kimden" alanına ziyaretçinin e-postasını ([your-email]) yazmaktır. Bu yapıldığında sunucunuz, sizin adınıza gmail.com veya başka bir alan adından mail göndermeye çalışır; alıcı sunucu bunu sahtecilik (spoofing) olarak görür ve mesajı spam'e atar ya da tamamen reddeder. Doğru yöntem "Kimden" alanını kendi alan adınızdan bir adres yapmak ([email protected]), ziyaretçinin adresini ise Reply-To başlığına koymaktır. Böylece gelen maili doğrudan "Yanıtla" dediğinizde cevap müşteriye gider.
[_site_title], [_remote_ip], [_date], [_url] gibi alt çizgiyle başlayan özel etiketler CF7'nin sunduğu hazır sistem değişkenleridir; sitenizin adını, gönderenin IP'sini veya tarihi otomatik ekler. Ayrıca CF7 ikinci bir e-posta (Mail 2) tanımlamanıza da izin verir; bunu ziyaretçiye otomatik "Mesajınızı aldık" teşekkür maili göndermek için kullanabilirsiniz. Kimden/kime ilişkisinin neden bu kadar hassas olduğunu ve alan adınızın e-posta itibarını nasıl koruyacağınızı SPF, DKIM ve DMARC rehberimizde detaylı bulabilirsiniz.
Zorunlu Alanlar ve Doğrulama Kuralları#
Doğrulama, kullanıcının eksik veya hatalı veri göndermesini engelleyen katmandır. CF7 iki tür doğrulama yapar. Birincisi, alan türünden gelen otomatik doğrulama: email etiketi geçerli bir e-posta formatı ister, url geçerli bir adres, date geçerli bir tarih bekler. İkincisi ise yıldızla işaretlediğiniz zorunlu alanların boş bırakılamamasıdır.
Bir alan doğrulamadan geçmezse form gönderilmez ve o alanın altında kırmızı bir uyarı belirir. Bu uyarı metinlerini Mesajlar sekmesinden Türkçeleştirebilir veya markanıza uygun hale getirebilirsiniz. Örneğin "The field is required." yerine "Bu alan zorunludur." yazabilirsiniz.
Basit sınırlamaları form etiketinin içine de gömebilirsiniz. Örneğin bir mesajın en az 20, en fazla 2000 karakter olmasını isterseniz:
[textarea* your-message minlength:20 maxlength:2000]
Bir sayısal alanı belirli aralıkta tutmak için [number* quantity min:1 max:100] yazabilir; bir metin alanına karakter sınırı koyabilirsiniz. Daha karmaşık kurallar (örneğin telefon numarasının belirli bir desene uyması) için wpcf7_validate_tel gibi kancalara (hook) bağlanan küçük PHP parçacıkları yazmak gerekir; bu, çoğu site için gerekmeyen ileri düzey bir konudur. Doğrulama mesajlarının doğru dilde ve anlaşılır olması, form terk etme oranını gözle görülür şekilde düşürür.
Spam Koruması: reCAPTCHA ve Akismet#
İnternete açık her form, kısa sürede botların hedefi olur. Hiçbir koruma koymazsanız gün içinde onlarca "Casino", "SEO hizmeti" veya bağlantı yağmuru içeren çöp mesaj almaya başlarsınız. CF7 bu soruna iki ana çözüm sunar ve ikisini birlikte kullanmak en iyi sonucu verir.
Google reCAPTCHA, botları insanlardan ayıran bir doğrulama katmanıdır. CF7 arka planda çalışan reCAPTCHA v3'ü destekler; bu sürüm kullanıcıya "trafik ışıklarını seç" gibi bir test göstermez, davranışa bakarak sessizce bir güven skoru üretir. Kurmak için Google reCAPTCHA yönetim panelinden bir site ve gizli anahtar (site key / secret key) alır, bunları CF7'nin İletişim > Entegrasyon ekranına girersiniz. Anahtarlar girildikten sonra koruma tüm formlarınızda otomatik devreye girer.
Akismet, WordPress'in kendi geliştirdiği, yorum ve form spam'ini içerik analizine göre filtreleyen bir servistir. Akismet eklentisini kurup bir API anahtarıyla etkinleştirdikten sonra, CF7 form etiketlerine küçük eklemeler yaparak gelen veriyi Akismet'e denetletebilirsiniz:
[text* your-name akismet:author]
[email* your-email akismet:author_email]
Bu ikisinin farkı şudur: reCAPTCHA gönderim anında botu durdurmaya çalışır, Akismet ise içeriğin spam olup olmadığını değerlendirir. İkisini birlikte kullandığınızda hem otomatik botları hem de içerik tabanlı çöp mesajları büyük ölçüde elersiniz. Uygulama katmanının önüne bir de sunucu tarafı WAF (web uygulama güvenlik duvarı) koyarsanız, saldırı ve istismar denemelerinin çoğu forma ulaşmadan filtrelenir. Formun sürekli hedef alındığı yoğun saldırı senaryolarında DDoS koruması da bu resmi tamamlar.
SMTP ile "Mail Gelmiyor" Sorununu Çözmek#
CF7 kullanıcılarının bir numaralı sorunu şudur: "Form gönderiliyor, teşekkür mesajı çıkıyor ama mail kutuma hiçbir şey düşmüyor." Bunun sebebi neredeyse her zaman aynıdır. WordPress varsayılan olarak e-postaları sunucunun PHP mail() fonksiyonuyla gönderir. Bu yöntem kimlik doğrulaması içermez; üretilen maillerin gönderen adresi çoğu zaman alan adınızla uyuşmaz ve SPF/DKIM imzası taşımaz. Sonuç olarak Gmail, Outlook gibi sağlayıcılar bu mesajları ya spam'e atar ya da sessizce reddeder.
Kalıcı çözüm, WordPress'i gerçek bir SMTP hesabıyla kimliği doğrulanmış şekilde mail göndermeye zorlamaktır. Bunun için WP Mail SMTP gibi bir eklenti kurar ve kendi alan adınıza ait bir e-posta hesabının bilgilerini girersiniz. Tipik ayarlar hosting paneliniz üzerinden şöyle görünür:
SMTP Sunucusu = mail.siteniz.com
Port = 465
Şifreleme = SSL
Kimlik doğrulama = Açık
Kullanıcı adı = [email protected]
Şifre = (posta hesabının şifresi)
Gönderen adres = [email protected]
Gönderen adı = Siteniz İletişim
Port 465 (SSL) veya 587 (TLS/STARTTLS) yaygın olarak kullanılır; hangisinin açık olduğunu hosting sağlayıcınızın dokümanından teyit edin. Ayarı yaptıktan sonra eklentinin "Test e-postası gönder" özelliğiyle mutlaka bir deneme yapın. Test maili ulaşıyorsa CF7 de aynı yolu kullanacağı için formunuz artık güvenilir şekilde teslim edilir.
Teslimatı gerçekten sağlamlaştırmak için SMTP tek başına yetmez; alan adınızın DNS'inde SPF, DKIM ve DMARC kayıtlarının doğru tanımlı olması gerekir. Bu üç kayıt, alıcı sunuculara "bu maili gerçekten benim adıma bu sunucu gönderdi" güvencesi verir ve spam klasörüne düşme olasılığını ciddi biçimde azaltır. Clou.TR web hosting ve WordPress hosting paketlerinde alan adınıza bağlı posta hesapları ve SMTP gönderimi hazır gelir; ayrıca profesyonel e-posta çözümüyle teslimat itibarınızı en baştan sağlam kurabilirsiniz. Formunuzu canlıya almadan önce gerçek koşullarda test etmek isterseniz site taşıma ve yedekleme hizmetleriyle güvenli bir hazırlık ortamı da kurabilirsiniz.
Gönderimleri Kaydetme ve Bakım#
CF7'nin varsayılan davranışında önemli bir eksik vardır: gönderilen mesajları hiçbir yere kaydetmez, yalnızca e-posta olarak iletir. Yani mail teslim sürecinde bir aksama olursa (spam filtresi, dolu kota, geçici sunucu hatası) o mesaj tamamen kaybolur ve geri getirmenin bir yolu olmaz. İş kaybına yol açan bu risk, birçok işletmenin farkında bile olmadığı bir kör noktadır.
Çözüm, gönderimleri veritabanında da saklayan bir kayıt eklentisidir. CF7'nin kendi geliştirdiği resmi eklenti Flamingo'dur; kurup etkinleştirdiğinizde her form gönderimi WordPress paneline kaydedilir ve Flamingo > Gelen mesajlar ekranından geçmişe dönük tüm başvuruları görebilirsiniz. Mail gelmese bile veri elinizde kalır. Flamingo dışında, gönderimleri tablo halinde listeleyen ve CSV olarak dışa aktaran başka kayıt eklentileri de vardır.
Formunuzu canlıya aldıktan sonra ihmal etmemeniz gereken birkaç bakım alışkanlığı var. CF7'yi, reCAPTCHA'yı ve kayıt eklentilerini güncel tutun; ara sıra kendinize gerçek bir test gönderimi yapıp mailin geldiğini doğrulayın; spam istatistiklerine bakıp koruma ayarlarınızı gözden geçirin. Bu düzenli kontrolleri kendiniz üstlenmek istemiyorsanız WordPress bakım hizmeti güncelleme, güvenlik ve teslimat izlemesini sizin yerinize sürdürür.
Sıkça Sorulan Sorular#
Contact Form 7 ücretsiz mi, gizli bir ödeme var mı?#
Evet, Contact Form 7 tamamen ücretsiz ve açık kaynaklı bir eklentidir; kullanım için lisans veya abonelik ücreti ödemezsiniz. Kullandığınız bazı yan servislerin (örneğin belirli hacimlerde reCAPTCHA veya Akismet'in ticari planları) kendi koşulları olabilir, ancak eklentinin temel form ve e-posta özellikleri hiçbir zaman ücretli değildir. Küçük bir kurumsal siteden yoğun trafikli bir e-ticarete kadar her ölçekte ek maliyet olmadan kullanılabilir.
Formu gönderiyorum ama e-posta gelmiyor, sorun nedir?#
Bu sorunun sebebi neredeyse her zaman sunucunun varsayılan mail() gönderim yöntemidir; ürettiği mailler kimlik doğrulaması ve doğru gönderen adresi taşımadığı için spam'e atılır veya reddedilir. Çözüm, WP Mail SMTP gibi bir eklentiyle kendi alan adınıza ait bir e-posta hesabı üzerinden SMTP kimlik doğrulamalı gönderim yapmaktır. Ayrıca "Kimden" adresini ziyaretçinin değil kendi alan adınızın adresi yapmalı ve alan adınızda SPF, DKIM, DMARC kayıtlarını tanımlamalısınız.
reCAPTCHA ve Akismet'i aynı anda kullanmalı mıyım?#
İkisini birlikte kullanmak en güçlü korumayı sağlar çünkü farklı katmanlarda çalışırlar. reCAPTCHA gönderim anında botu davranışına bakarak durdurmaya çalışırken, Akismet gönderilen içeriğin spam olup olmadığını analiz eder. Yalnızca reCAPTCHA kullanmak otomatik botların çoğunu durdurur ama içerik tabanlı çöp mesajlar sızabilir; yalnızca Akismet ise botu geç yakalar. Düşük trafikli bir sitede biri yeterli olabilir, ancak sürekli spam alıyorsanız ikisini birlikte açmanızı öneririm.
CF7 gönderilen mesajları saklıyor mu?#
Hayır, Contact Form 7 varsayılan olarak gönderimleri veritabanına kaydetmez; yalnızca e-posta olarak iletir ve mail teslim edilemezse mesaj kaybolur. Bu riski ortadan kaldırmak için CF7'nin resmi eklentisi Flamingo'yu kurmanız gerekir; Flamingo her gönderimi WordPress paneline kaydeder ve geçmiş başvuruları görüntülemenizi sağlar. Böylece bir mail sorunu yaşasanız bile veri elinizde kalır ve müşteri talebini kaçırmazsınız.
Aynı sitede birden fazla form oluşturabilir miyim?#
Evet, CF7 ile istediğiniz kadar bağımsız form oluşturabilirsiniz ve her birinin kendi alanları, e-posta şablonu ve alıcı adresi olur. Örneğin genel iletişim için bir form, teklif talebi için ayrı bir form, kariyer başvuruları için dosya yüklemeli bir form tanımlayabilirsiniz. Her formun kendine özgü bir kısa kodu vardır ve bu kodu ilgili sayfaya yerleştirerek formu orada gösterirsiniz. Farklı departmanlara farklı adreslere yönlendirme yapmak da böylece çok kolaylaşır.
Formuma dosya yükleme alanı ekleyebilir miyim?#
Evet, file form etiketiyle ziyaretçilerin CV, ekran görüntüsü veya belge yüklemesine izin verebilirsiniz. Güvenlik açısından izin verilen uzantıları filetypes seçeneğiyle sınırlamanız ve dosya boyutuna limit ile üst sınır koymanız önemlidir; aksi halde formunuz istenmeyen büyük veya zararlı dosyalar için bir kapı olabilir. Yüklenen dosya, form gönderildiğinde e-postaya ek olarak iliştirilir, dolayısıyla SMTP teslimatınızın da bu ek boyutu taşıyabildiğinden emin olun.
Kapanış#
Contact Form 7, ücretsiz olmasına rağmen doğru yapılandırıldığında kurumsal ihtiyaçları rahatlıkla karşılayan güçlü bir iletişim formu çözümüdür. Bu rehberde gördüğümüz gibi işin püf noktası formu kurmak değil; teslimatı SMTP ile garanti altına almak, "Kimden" adresini alan adınıza sabitlemek, reCAPTCHA ve Akismet ile spam'i elemek ve Flamingo ile gönderimleri kayıt altında tutmaktır. Bu dört adımı atlamadan uyguladığınızda, iletişim formunuz kaybolan mesaj ve çöp mail derdi olmadan sorunsuz çalışır.
Sağlam çalışan bir form, sağlam bir barındırma altyapısıyla başlar. Alan adınıza bağlı SMTP gönderimi, hazır e-posta hesapları ve WordPress'e uygun performansla formunuzun her mesajını yerine ulaştırmak için Clou.TR WordPress hosting ve web hosting paketlerini inceleyebilir, teslimat itibarınızı en baştan doğru kurmak için profesyonel e-posta çözümümüze göz atabilirsiniz. Kurulumdan güncellemeye kadar her şeyi bizim üstlenmemizi isterseniz WordPress bakım hizmetimiz yanınızda.