WPにメールで投稿するには?「POP3: premature NOOP OK, NOT an RFC 1939 Compliant server」

wordpressにメールで投稿する設定と、そのエラーの修正について。
なお、サーバ側でCronを動かして投稿されたメールを取得して表示させる必要があります
(Cronを使わない方法も考えられますが……後で、いつか、考えてみます)。
それを前提にしたメモ。

WP管理ページの

各種設定>投稿設定/メールでの投稿

・メールサーバ:
・ポート:
・ログイン名:
・パスワード

これらを設定します。

*投稿先のメールアドレスは専用のアドレスを用意してください。必ず、新しく作成して、それを使ってください。そうでないと、自分宛に来たプライベートなメールや、仕事メールなども、すべて表示されてしまいますよー(笑……えないですよ、いやほんと。見つかったら、スパム見本市会場にもなりうる)。

この設定の後、投稿専用メールアドレスにメールを送り、wp-mail.phpをブラウザで読んで、ウィンドウに「Mission complete」とでも出れば、メールからの投稿がブログに掲載されて、成功なんですが、それが出ない……??

wp-mail.phpをロードした結果はこんなエラー

───────────────────────
POP3: premature NOOP OK, NOT an RFC 1939 Compliant server
───────────────────────
と出る。

検索すると、

wp-includes/class-pop3.php

の行で、

if($this->RFC1939) {

ã‚’

if(!$this->RFC1939) {

に書き換えればよい、と出た。

これでOKかと思い、もう一度、wp-mail.php をロードすると、今度は、

───────────────────────
Call to undefined function: stripos() in
───────────────────────
と出る。「その関数呼べないよ」と。うーむ。再び検索、すると、

「PHP4では、striposではなく、strposで」

とある。自分のサイトはPHP4環境なので、

wp-mail.php

の、

if (stripos($content_transfer_encoding…

の行を

if (strpos($content_transfer_encoding…

に書き換える。

wp-mail.php をブラウザでロードすると、

───────────────────────
Author = ******@*****.***(投稿したメールアドレス)
Content-type: text/plain, Content-Transfer-Encoding: 7bit, boundary:

Raw content:

********
Author: 1

Posted title: ********
Posted content:

********
Mission complete, message 1 deleted.
───────────────────────

成功! これでブログにも掲載された。

今度は、自動的・定期的に、wp-mail.phpをロードしなければいけない。
これはサーバ側でCRONでやってもらう。
サーバ管理ソフトでCRON管理ができるなら、

cron.sh

というシェルスクリプトを置いて、パーミッションを700などとして、
一時間に一回など、定期的に読ませればいい。

cron.sh の中身は、
───────────────────────
#!/bin/sh
wget -O – -q http://www.(あなたのサイト)/wp-mail.php
───────────────────────

としておく。

これでOK!

……かと思いきや……携帯の環境によってば、文字化けします。
文字コードの問題……直せるなら直したいところですが、それについては、検索するとたくさん出てくるようで、これから取り組んでみます。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>