Şimdi sizlerle nasıl e-posta yollayarak blog yazılır onu paylaşacağım. Ne gerek var e-posta ile blog yazmaya diyebilirsiniz. Buna ben de katılıyorum :) Ama bu cep telefonumuzdan da blogumuza yazı yollamaya yarayabilir. Her an her yerden blog yazabilmek aslında güzel bir şey :)
WordPress Blog Sisteminde E-posta İle Yazı Yazma
WordPress
- WordPress yönetim paneline giriş yapıp, Tercihler>Yazma bölümüne geliyoruz. Bizden posta sunucusu, giriş ismi, parola istiyor. Şimdi ikinci adıma geçip bu bilgileri elde edelim. Burada bizden SSL kullanmadan giriş yapabileceğiniz bir POP3 mail hesabı istiyor. Gmail SSL’siz girişe izin vermiyor ama Cpanel ile oluşturduğunuz mailler SSL’siz girişe izin veriyor. Yani Cpanel’den bir tane oluşturabilirsiniz.
- POP3 oluşturabileceğiniz panelinize (örn:cpanel) girin ve <adres>@domain.com gibi bir mail adresi oluşturun. Burada önemli olan <adres> kısmına başka kimsenin tahmin edemeyeceği sadece sizin bildiğiniz bir adres yazmanız. Çünkü bu mail atılan tüm e-postalar blogunuzda yazı olarak görülecek.
- POP3 maili oluşturduktan sonra Yazma ayarlarının yapıldığı sayfaya dönün aşağıdaki ayarları yapın.
- Posta sunucusu : mail.domain.com (Genelde böyledir)
- Giriş ismi: <adres>+domain.com (Eğer e-posta cpanelden oluşturulduysa arada + olmalıdır)
- Parola: şifreniz…..
- Varsayılan posta kategorisi: E-posta ile eklenen yazıların hangi kategoriye atılacağı..
- Bu ayarları yaptıktan sonra <adres>@domain.com a bir e-posta yollayın. Türkçe karakter problemi çıkmaması için karakter kodlaması UTF-8 olmalı.
- //<blog adresimiz>/wp-mail.php adresine girin. Bu sayfa <adres>@domain.com e-postasına gelen yazıları blogunuza yazı olarak aktarır.
- Bu kadar :)
Aslında bu kadar kolay değil. Eğer çalıştıysa ne mutlu size! WordPress 2.2.2’de bu olay bu kadar kolay çalışmıyor. Düzeltilmesi gereken hata var. Hata Posted content: kısmında içeriğin gözükmemesi. Bunu da şöyle aşıyoruz;
wp-inculdes/class-pop3.php dosyasını açın
(369. satır) $line = fgets($fp,$buffer);
ile
(377. satır) $count++;
arasındaki kodları silin. Sonra bu iki satır arasına şu kodları yapıştırın;
if (preg_match(“/^\s+\S+/”, $line) && $count > 0) { $MsgArray[$count-1] .= $line; continue; }
if ((ereg(“^\.\r\n”,$line)) || (empty($line))) { break; }
if (ereg(“^\.\.”, $line)) { $MsgArray[$count] = substr($line, 1); }
else { $MsgArray[$count] = $line; }
Bunu yaptıktan sonra eğer gönderdiğiniz e-postanın Content-Transfer-Encoding’i 7bit ise artık content kısmında yazı çıkacak. Ama uzun yazılarda bu böyle değildir. En azından Gmail’den yollanan maillerde öyle degil.
Ben oluşturduğum POP3 maile blog yazısı yollarken GMail’i kullandım. Hem cep telefonumdan hem de webden e-posta yolladım. Uzun yazılarda yani 1-2 kelimeden fazla olan yazılarda Content-Transfer-Encoding: base64 olarak geliyordu. Yani yazılar base64 kullanılarak şifrelenmiş olarak geliyor. Şimdi bunu aşmalıyız. Nasıl mı ? Bunu decode ederek :) Bunu da şöyle yapıyoruz :
wp-mail.php dosyasındaki 127. satırdaki bu kodu bulun
$content[1] ? $content = $content[1] : $content = $content[0];
hemen altına bu kodu ekleyin
if ($content_transfer_encoding = “base64”) { $content = base64_decode($content); }
Şifrelenmiş yazıyı çözme işini de yaptık ve artık herşey tamam. Artık e-posta ile blogumuza yazı yazabileceğiz. Fakat her mail attıktan sonra yazımızın blogumuza eklenmesi için wp-mail.php sayfasına girmemiz gerekiyor. Bunu da otomatik olarak yapan bir eklenti varmış: Wp-Cron Belgelerde wp-cron’u kurun ve o kendi kendine çalışsın diyor fakat eklenti biraz sorunlu.. Eğer çalışmazsa onun yerine iframe ile wp-mail’i sürekli kontrol ettirebilirsiniz. Yani şu kodu sayfanızın bir köşesine yerleştirerek;
<iframe src=”//<blog adresiniz>/wp-mail.php” name=”mailiframe” width=”0″ height=”0″ frameborder=”0″ scrolling=”no” title=””></iframe>
Yazıyı buraya kadar okuyan varsa teşekkürler, yazım boşa gitmedi demektir.. Aslında tamamını okuyacak pek kişi yok ama ben merak ettim nasıl yapıldığını ve Türkçe kaynak olmadığı yazdım. Mutluyum :)
Kaynaklar