透過電子郵件發表文章

WordPress 可以設定使用email帳號來張貼您的blog, 為了開啟這個功能, 你需要設定一個專用的email帳號, 設定WordPress, 以其設定你的web 伺服器來讓 WordPress 可以定期的檢查這個email 帳號.

你可以適用大部分標準的email 軟體來張貼或是一種專門用來張貼文章的程式Weblog Client.

概述

  1. 進到WordPress的網誌管理在選項> 撰寫 裡有透過電子郵件發表文章的設定.
  2. 新增一個帳號, 它的登錄名稱跟你在登入畫面的名稱是一樣的.
  3. 使用下述選項其中一個:
    • 當你寄送一封信到你的張貼位址時使用你的瀏覽器來觀看http://你的web網址/installdir/wp-mail.php .
    • 使用 WP-Cron (http://www.skippy.net/blog/2005/05/26/plugin-wp-cron/) WP-Mail 外掛.
    • 使用像是wget, curl, 或GET等命令列式的HTTP 代理程式定期地查看http://你的web網址/installdir/wp-mail.php

透過電子郵件發表文章的設定

步驟 1 – 設定: 概述

  1. 用你的管理帳號登錄到WordPress的網誌管理.
  2. 進到 選項 > 撰寫.
  3. 在該頁底下閱讀透過電子郵件發表文章的操作指令. 在這些指令的最後, WordPress 會給你三組隨機字串用來作為”透過電子郵件發表文章”的帳號名稱(postaccount).
  4. 你需要在你的email伺服器新增一個”透過電子郵件發表文章”的帳戶(postaccount) . 這是你個人email帳戶的地方. 不建議你使用公用免費的像是Yahoo, Hotmail, 等等的email服務.

    注意: 有些email 伺服器不允許只有數字或開頭是數字的email帳戶名稱.

  5. 當你在你的email伺服器新增了一個”透過電子郵件發表文章”的帳戶(postaccount) 後, 回到Wordpress 選項 > 撰寫 那邊填入郵件伺服器 的名字以及使用的埠號. (假如你不知道這些, 參考你的web 主機供應商的FAQ 或手冊. 埠號通常是 110.)
  6. 接下來, 輸入登入名稱及你的”透過電子郵件發表文章”帳戶的使用者密碼(postaccount).

    注意: 登入名稱(postaccount) 應改使用完整的像是user@example.com 這樣的格式而不只是使用者名稱.

  7. 選擇預設郵件發表的分類當郵件送達的時候.
  8. 按下更新選項這樣就完成了!
    現在發一封信到你的”透過電子郵件發表文章”的帳戶(postaccount). 如果你設定的正確的話, 應該可以完美無缺的運作.

步驟 2 – 新增”透過電子郵件發表文章”的帳戶: 提醒

新增”透過電子郵件發表文章”的帳戶跟你在網誌管理的使用者有相同的名稱, 以及相同的密碼.

注意: 強烈建議您使用”秘密”的位址 – 也就是說, 這個帳戶名稱是很難猜出的並且只有你知道. 任何送到這個位址的email都會自動地貼到你的部落格. WordPress 會在你要設定時給你幾個不錯的名字.

步驟 3 – 啟動”透過電子郵件發表文章”的帳戶

下面的選項是用來設定email如何被擷取以及WordPress如何釋放到部落格的過程.

瀏覽器啟動

當你一送eamil到postaccount@example.com 帳戶時, 你就可以在瀏覽器查看 http://example.com/installdir/wp-mail.php . (注意: 在每次寄送一篇文章時你必須這樣做.)

啟動外掛

下載, 安裝, 以及啟動WP-Cron (http://www.skippy.net/blog/2005/05/26/plugin-wp-cron/) 外掛. 啟動需要的WP-Cron-Mail 這個外掛. 這個外掛不需要使用者介入就可以在背景執行.

啟動工作流程排序

設定工作流程排序來定期查看http://example.com/installdir/wp-mail.php 使用像是wget, curl 或 GET等的命令列式的HTTP agent. 執行的命令像是這樣:

wget -N http://example.com/installdir/wp-mail.php

假如你不是使用,換掉程式及它的參數.

注意: 另一種方法, 就是執行”php /full/path/to/wp-mail.php” 在工作流程排序. 這個會使用php執行這個wp-mail.php, 這樣就不需要額外的程式來執行. (你可能比較會被授權執行php而不是wget)

設定工作流程排序的更多資訊, 請參閱:

  • Intro To Cron Jobs (http://www.unixgeeks.org/security/newbie/unix/cron-1.html)
  • Automating tasks with cron services at USAIL (http://www.uwsg.iu.edu/usail/automation/cron.html)
  • 你的主機供應商提供的FAQ 或是手冊

Windows 的使用者請注意: 假如你的主機是跑Windows的話有另外類似的程式可以來做. 例如,VisualCron (http://www.visualcron.com), Cron for Windows (http://cronw.sourceforge.net/)pycron (http://www.google.com/url?sa=U&start=2&q=http://sourceforge.net/projects/pycron/&e=1102&mr=8,2!619021,!a:sr4). 請進一步參閱這些專案的文件說明.

啟動Procmail

假如你的伺服器使用 procmail (http://www.procmail.org/), 在這個帳戶的家目錄下的.procmailrc 裡置入下一行是有用的.

Shell=/bin/sh<br> MAILDIR=$HOME/.maildir/ DEFAULT=$MAILDIR :0
{ :0Wc ./  :0 | wget -N http://example.com/installdir/wp-mail.php  }

這是比較特殊的, 就像擷取某個主旨的表示式一樣. 請查看 procmail (http://www.procmail.org/) 以找到更多的資訊.

電子郵件格式

WordPress 會使用你信件的主旨作為文章的標題, 以及信件的內容作為文章的內文, 一般的HTML 標籤會除去. WordPress 會以步驟1所設定的”預設郵件發表的分類”來分類並且使用網站的管理員為張貼的作者.

email中的圖片及附件會被張貼在裡面.

測試

要測試你的設定, 只要寄email 到postaccount@yourmaildomain (或 user@yourmaildomain 假如你使用 .qmail 轉信設定). 然後完成下列事項:

  • 假如你沒有自動話的系統設定, 就在瀏覽器查看http://example.com/installdir/wp-mail.php . 這個程式會告訴你是否發現有email, 以及印出它張貼的詳細資料. 當你再查看你的部落格時就會發現你的email所張貼的文章.
  • 假如你使用WP-Cron, 只要等15或20分鐘.
  • 假如你有工作流程排序執行的話, 就等到他下次排程的時間來執行(或者暫時編輯工作排程來讓他立即執行). 假如你在終端視窗執行tail -f /var/log/cron, 再程式執行後可以看到完成排程時新增的紀錄. 當這件事完成時, 可以到你的瀏覽器看你的email張貼的文章.

疑難排解

錯誤訊息:

Ooops POP3: premature NOOP OK, NOT an RFC 1939 Compliant server

發生這個錯誤, 開啟 wp-includes/class-pop3.php 並更改這一行:

if($this->RFC1939) {

為下面這一行:

if(!$this->RFC1939) {

注意這個驚嘆號.

Error Message: There does not seem to be any new mail

這個錯誤是誤會 – 這個測試只是要檢查是否有任何信件抵達.

假如你覺得有點冒險開啟

wp-mail.php

並且尋找:

 $count = $pop3->login(get_settings('mailserver_login'),
		     get_settings('mailserver_pass'));

在它後面改成下面這樣子:

  if (0 == $count) :
echo "There does not seem to be any new mail. <br/>n";
echo "count = $count<br/> n";
echo "$pop3->ERROR n";
exit;
endif;

這樣就會出現比較有意義的訊息.

另一個可能(在我的例子中) 就是 mail 伺服器拒絕嘗試提供非編碼的密碼像-POP3的連線. 假如你的webserver 及 email 伺服器在同一台電腦上你可以指定localhost127.0.0.1 作為你的mail 伺服器. 這樣子的話就不用加密它的 traffic 會假定是OK .

補充事項

有一些補充事項可以擴充WordPress的”透過電子郵件發表文章”的功能. 這些是向有可能需要更改核心檔案所以在變更之前請小心的做好備分.

加強功能的程式

取代原來的wp-mail.php:

  • Postie (http://www.economysizegeek.com/?page_id=395) 支援張貼到某分類, 自動移除email的簽名, POP3/IMAL (+SSL) 以及其他.

Email 格式的工具

下面的加強功能可以使你的wp-mail.php 可以被轉譯成你的文章的metadata:

寄送者的 email 位址
改良式的wp-mail.php 會去尋找使用者的資料庫的email位址. 假如有吻合的使用者, 它就會標示成那個使用者張貼的. 假如沒有吻合, 它就會刪除這封email並且不會張貼到部落格中. (這是針對安全及防堵垃圾信很棒的做法.) 它是在 From 設定:
主旨列
假如[n] 出現在你的email的主旨列中, 這封信會被張貼到分類編號 n 中. 不然的話, 它會被張貼到步驟1中的”預設郵件發表的分類”. 例如: [1] This is a Test! 會張貼”This is a Test!”這篇分張在General下.

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *