Wp_Mail() Çalışmıyor, İletişim Formundan Mesaj Gelmiyor
WordPress tabanlı sitelerin zaman zaman kronik sorunları ortaya çıkmaktadır. Mesela yeni bir web sitesi inşa edeceksiniz, temayı seçtiniz, beğendiniz, sunucunuz son sistem ve hızlı, optimizasyon tamam, her şey hazır.
Ama bir bakmışsınız test aşamasında iletişim formundan mesaj ”Başarılı” dediği halde size ulaşmıyor.
Sunucunuzda mail() Fonksiyonu Kapalı Olabilir
Evet aslında bu sorunun ana kaynağı da budur. Güvensiz hareket ortamı ve aşırı spam yağmurundan dolayı hosting şirketleri, sunucu yetkilileri mail fonksiyonlarını kapatıp daha güvenli ve hızlı olan SMTP protokolü ile e-posta iletişimi kuruyor. Haksız da sayılmazlar aslında. Fakat gelelim asıl sorunumuzun başına, ne oldu da çalışan diğer sitelerinizin yanında bu son uğraştığınız tema da bu iletişim formu çalışmadı?
Tema Kodlarında E-Posta Protokolü mail() Fonksiyonu Tabanlı Kodlanmış Olabilir
İşte sizi uğraştıran sorunun ana kaynağı aslında bu. Bizler Story Bilişim® olarak çok yazılan, sık karşılaşılan, herkesin kaleme aldığı sorunları yazmaktansa geceler boyu bizi uğraştıran, yabancı kaynaklardan ve yabancı arkadaşlardan çılgınca araştırma yaptığımız, başımıza gelen sorunların çözümünü yazmaktan yanayız.
Peki tema yapımcısı bilerek veya bilmeyerek kapalı olan bu fonksiyona göre e-posta transferi düşünmüş olsa da bunun bir çözümü yok mu? Elbette var, hem de EKLENTİSİZ!
SMTP İle E-Posta Gönderimlerinizi Eklentisiz Yapabilirsiniz
Elbette bunun için bir kaç satır kod yazmanız lazım. Yani tema yapımcısının bizi köşeye sıkıştırdığı (Genelde pluggable.php dosyasında olur o kodlar ve ayıklamak da cidden sordur, site hata verebilir) wp_() fonksiyonunu pasifize ederek kendi Smtp ayarlarımızı içeri gömeceğiz. Bunu yaparken de aslında hiç eklenti kullanmamıza da gerek kalmadığını göreceğiz.
Yapılması Gereken;
wordpress ana dizininizde bulunan wp-config.php dosyanızı bir kod editörü yardımıyla açarak aşağıda bulunan; /* That’s all stop editing! Happy blogging. */ yorum satırının hemen üstüne şu kodları eklemelisiniz:
// SMTP e-mail protokolü komutu veriyoruz
define( 'SMTP_USER', 'epostaniz@alanadi.com' ); //smtp gönderecek olan
define( 'SMTP_PASS', 'e-posta sifreniz' );
define( 'SMTP_HOST', 'smtp.gmail.com' ); //gmail değilse değiştirin
define( 'SMTP_FROM', 'info@alanadiniz.com' ); //mail kimden geliyor
define( 'SMTP_NAME', 'Web Destek' ); //Gönderici adı
define( 'SMTP_PORT', '587' ); //SSL sertifikanız olduğunuzu varsayıyoruz
define( 'SMTP_SECURE', 'tls' );
define( 'SMTP_AUTH', true );
NOT: Bu işlem itibariyle her hangi bir yükleme yapmadan her ihtimale karşı mutlaka güncel bir yedek alın!
Bu kodları wp-config.php dosyasına yazdıktan sonra ftp ile yüklüyoruz. Şimdi sıra geldi functions.php dosyasına gerekli komutu vermeye.
Görünüm/Tema Düzenleyici alanın, yani hiç dosyayı indirmeden functions.php dosyanızın en altına aşağıdaki kodları ekleyin:
// Sadece SMTP ile E-Mail Gönderme Kuralı
add_action( 'phpmailer_init', 'my_phpmailer_example' );
function my_phpmailer_example( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = SMTP_HOST;
$phpmailer->SMTPAuth = SMTP_AUTH;
$phpmailer->Port = SMTP_PORT;
$phpmailer->Username = SMTP_USER;
$phpmailer->Password = SMTP_PASS;
$phpmailer->SMTPSecure = SMTP_SECURE;
$phpmailer->From = SMTP_FROM;
$phpmailer->FromName = SMTP_NAME;
}
Bu kodu da functions.php dosyanıza eklediğinizde iletişim formunuzun artık çalıştığını görmeniz yüksek ihtimaldir.
Eğer sorununuz devam ediyorsa mutlaka bir uzman gözüyle bakılması ve incelenmesi için profesyonel destek almalısınız. Yorumlarınızı / sorularınızı paylaşımın altına bekliyor olacağız.
Hoşçakalın.