WordPress 2.7 のメール投稿機能を使う

2009-1-24 07:00
このエントリーをはてなブックマークに追加

WordPress 2.7 にはメール投稿機能がついています。意外と知られていないようですが、ダッシュボードから「設定」-「投稿設定」を開き、下の方へスクロールすると「メールでの投稿」という欄があります。ここにメールサーバ名とユーザ名、パスワードを指定すれば良さそうです。

WordPress のメール投稿設定画面

しかし、これを設定しただけではメールを送っても全く投稿されませんでした。PCからでも、携帯からでもどちらも動作しません。最初は cron か何かで定期的にメールボックスをチェックしてくれるのかと思ったのですが、そうではありませんでした。

実はメール送信後に、 http://(WordPress の URL)/wp-mail.php というファイルに、毎回アクセスする必要があります。この URL を叩くと PHP のスクリプトが作動して、メールボックスにアクセスしてくれるのです。

ここで気になったのは、wp-mail.php にアクセスしたときに投稿したメールアドレスやタイトル(文字化けしていますが)が表示されてしまうことです。しかも、WordPress へのログインの有無に関係ありません。

wp-mail.php にアクセスしたところ。投稿アドレスが表示されてしまう。

不用意にメールを送りっぱなしにしたまま放置していると、第三者にメールアドレスを知られてしまう可能性があります。

また、このファイルに集中アクセスされることにより、メールサーバに負荷をかけられる攻撃を受ける可能性があります。
そこで、この wp-mail.php ファイルはリネームして、推測できない別の名前にしておいた方が良いでしょう。メール投稿を使わない場合は、削除しておいた方がよりよいです。

ところで、このメール投稿機能でメールのタイトルに日本語を使うと文字化けしてしまいます。これはリネームした wp-mail.php の 146 行目を直接変更します。

$subject = trim($subject);
$subject = mb_convert_encoding(mb_decode_mimeheader($subject), "utf-8"); //←追加

続いて、本文の文字化けも修正します。同じく 158 行目に追加します。

$content = trim($content);
$content = mb_convert_encoding($content, "UTF-8" , "auto"); //←追加

これでメール投稿機能で日本語でも正常に使えるようになりました。

1件のコメント

  1. (thumbnail)

    参考になりました、ありがとうございます!

    > $subject = mb_convert_encoding(mb_decode_mimeheader($subject), “utf-8”); //←追加

    の行に、全角の空白が含まれていてエラーになってしまい、ちょっぴり悩みました(^_^;)

    これで気軽にメールで投稿できそうです。ありがとうございますっ(^-^)

    Comment by shun552010-02-3 05:53

現在、コメントフォームは閉鎖中です。

24 queries. HTML convert time: 0.353 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2013 @ futuremix.org ログイン