WordPress’e e-posta ile blog yazma
Posted: Ağustos 28th, 2007 | Author: Hüseyin Berberoğlu | Filed under: Wordpress | 31 Comments »
WordPress kullanan çoğu kişi Tercihler > Yazma bölümüne girmiştir ve orada E-posta ile yazma diye bir şey görmüştür. Ne olduğunu anlamayanlar e-posta adreslerinin şifrelerini bile girmiş olabilir. Ben bu e-posta ile yazma nedir nasıl çalışır diye merak ediyordum ve bugün araştırdım. Türkçe olarak hiç kaynak bulamadım, İngilizce kaynaklarda sınırlı.
Ş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ı.
- http://<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=”http://<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
e-posta göndererek blogunuzu güncel tutun
e-posta göndererek blogunuzu güncel tutun.. çok faydalı bir eklenti bence ve neXus kaynakları türkçe ye çevirip bizim için detaylı bir biçimde anlatmış hatalara çözümler göstermiş.. size sadece kullanmak kalıyor..
öyle bir sekme göremedim bende mi bir sorun var ? :s
wordpress yönetim paneline girince yönet’in altında Yazma var. olması gerek :)
Tesekkurler yazi icin. Ama yazinizda verdiginiz eklenti yi wordpress ten aktif etmeme ragmen otomatik eklemeyi basaramadim.
saygilar,
wp-cron’dan bahsediyorsanız o eklentinin çalışmasında problem olduğunu yazmıştım.. verdiğim iframe kodu ile sürekli kontrol işi yapılabilir
emeğinize sağlık deneyeceğim,
uyarladım karakter hatası dışında oldu,
mu 1.2.5 kullanıyorum; 127 . satırda belirttiğiniz kodlar yok, kodları hızlıca komple taradım bulamadım….
resmi siteye bakmıştım, ingilizcem olmadığı için yapamamıştım, benim için yazınız büyük bir kaynak oldu, tekrar teşekkür ederim…
Bir şeyi atladım kusura bakmayın; üstte verdiğiniz kodları kopyalayınca ” işaretleri kodda hata veriyor, aşağıya düzelttiğim şeklini verdim, ihtimal aşağıdakilerde kayıtta bozulabilir, deneyecek olan arkadaşlar dikkat etsinler, bilinen bir şeysede kusura bakmayın… Saygılar…
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; }
Merhaba. uzun zamandır bende bunu arıyordum nasıl yapılır diye. Şöyle ki benim avuçiçi bilgisayarımı kullanarak yapmak istediğim şey tam anlamıyla bu fakat belirttiğiniz tüm herşeyi yaptım lakin hala bir iki kelime haricinde görünmüyor. Başlık tam olarak çıkıyor ama içerikte bir sıkıntı var çözemedim. Yukarıda dediğiniz herşeyi yaptım.
base64_decode ile ilgili de aynı zamanda gmail den göndermek olabilir diye düzenledim. PDA’dan ise gmail den ya da kendi bloguma ait mailinden gönderdiğim maillerde sıkıntı yaşıyorum.
güzel bir site, konuları da güzel seçiyorsunuz, umarım devamı gelir
burda anlatılanları uyguladım ama çalışmadı..yardımcı olur musunuz ?
@selman, nerede takıldığını veya karşılaştığın problemi yazarsan belki yardımcı olabilirim.
gercekten cok guzel emek harcayanlara tskler
Emeğinize sağlık.. teşekkür ederim
Teşekkürler. deneyeceğim. Eminim bu konuyu merak eden pek çok kişi vardır. Yazınızı isim-link vb. kaynak göstererek Pardus-Linux e-dergisinde yayımlayabilir miyiz?
@egitimist Eğer bu yöntem halen çalışıyorsa tabi ki yayımlayabilirsiniz :)
Sürümler değişti, yapılacak işlemler değişti ama yazınızı bu kadar ayrıntılı olarak hazırladığınız için teşekkürler. Gerçekten de sonuna kadar okudum. Ben halen sorun yaşayanlardanım. Çözümü bulursam bende yayınlarım :)
@Serkan YILDIRIM, evet sürümler, işlemler değişti. Bunu yazıya eklemek daha iyi olurdu ama yorumla belirtmeniz/belirtmemiz de iyi oldu. Keşke yeni bir yazıyla yeni sürümlerde nasıl yapılacağını anlatacak vakti bulabilsem. Ama askerden döndüm diye bir yazı bile yazamadım daha :|
Yorum için teşekkürler.
Sonuna kadar okudum teşekkürler. Tamda aradığım kısma nokta atışı yapmışsınız :)
sayfada su hatayı alıyorum.
“Parse error: syntax error, unexpected ‘^’ in /home/turkknet/public_html/wp/wp-includes/class-pop3.php on line 368″
o kısma eklediğim ise sizin dediğiniz kısım ,ama sanırım sürüm farklılıkları hataya neden oluyor. düzeltme şansı varmıdır.?
367 $line = fgets($fp,$buffer);
368 if (preg_match(“/^\s+\S+/”, $line) && $count > 0) { $MsgArray[$count-1] .= $line; continue; }
369 if ((ereg(“^\.\r\n”,$line)) || (empty($line))) { break; }
370 if (ereg(“^\.\.”, $line)) { $MsgArray[$count] = substr($line, 1); }
371 else { $MsgArray[$count] = $line; }
$count++;
@endy, yazıyı yazalı çok oldu, artık geçerli olmayabilir. Bu aralar pek bakma şansım yok maalesef.
Cevap yazma nezaketiniz için yinede teşekkürler..Başarılar…
Kardeş emeğine ellerine sağlık… saolasın..çok hayra geçti.. valla…allah razı olsunç…. :)))
[...] http://www.birazkisisel.com/wordpresse-e-posta-ile-blog-yazma/comment-page-1/#comment-2085 [...]
Yazı için teşekkürler. Eline sağlık. Ben şimdi bu ayarları yapmaya çalışıyorum. Ama başarılı olamadım. Html kodu olarak mesaj göndermek istiyorum.Ama daha hiç yazı yayınlayamadm. Gmail kullandığım için sorun oluyor galiba. Ama siz de gmail kullanmışsınız.Yardımcı olursanız seviniriö. Teşekkürler
Gmail kullanınca sorun olmaz dostum sanmıyorum..
Bir eklentiyle hallettim. Tekrar teşekkürler
çok faydalı bilgiler için teşekkürler
cok teşekkürler. Hosting sayfamdan bir email hesabı yapılandırdım bilgilerini wp ye girdim. o adrese gel tum mailler wpye post olarak düsüyor sanırım halletmis oldum. :)
Merhaba, daha önce yapmıştım fakat sürüm değişikliğinden kaynaklı yapamıyorum tekrar. Postu panele düşürüyorum, yalnız yazı içeriği görünmüyor. Bu konuda yardımcı olabilir misiniz?
Bu yazıdan sonra bir daha bu konu ile uğraşmadım, yardımcı olamıyorum maalesef.