以前メール投稿プラグイン「Postie」の複数カテゴリー投稿の記事を書いたんですが再び困ったことになりまして。
プラグインの機能的に問題はないんですが、もしかしてPostieさん日本語タイトルのメール投稿に対応してないんじゃないか問題が浮上いたしました。
ちなみにエラーが起きたときの環境は
- PHPのバージョン 5.2.17
- WordPressのバージョン 4.7.13
- 「Postie」プラグインのバージョン 1.9.34
でした。
目次
メール投稿できないんだけど
あるサイトでコラムをメール投稿で更新していました。プラグインの導入前にテストを行い、きちんとコラムが投稿できていることを確認できたところまでは良かったんです。
その後本番で使用しようとしたとき何故かコラムが更新されない。待てど暮らせど更新されない。
なぜ???
プラグインの設定が間違っていたかも?
もしかしてプラグインでなにかメール受信設定間違ってたかなと思って確認。
ですが設定にはなんの問題もありませんでした。
Postieには自動でメールBOXを確認して投稿してくれる機能の他に、手動で取得を行ったりデバッグを行える機能があります。
その機能を使って何がエラーなのか調べてみました。
するとこんなエラーが出ていました。
PostToDB Error: データベース内の投稿を更新できませんでした
これだけじゃ何がエラーなのかわかりませんがな…
もう少しデバッグログを見ていくと変なことが起きてました。
Array ( [post_author] => 10 [comment_author] => editor [user_ID] => 10 [post_content] => テキストテキストテキストテキスト [post_title] => æ�¥æ�¬èª�ã�¿ã�¤ã��ã�« [post_name] => æ�¥æ�¬èª�ã�¿ã�¤ã��ã�« [ID] => 7257 [post_status] => publish ) postie_save_post: about to insert post PostToDB Error: データベース内の投稿を更新できませんでした Array ( [0] => データベース内の投稿を更新できませんでした ) post_email: sending notifications email_notify: start email_notify: no post id post_email: resulting post WP_Post Object ( [ID] => 7257 [post_author] => 1 [post_date] => 2019-05-24 14:15:00 [post_date_gmt] => 2019-05-24 05:15:00 [post_content] => tmpPost [post_title] => tmptitle [post_excerpt] => [post_status] => trash [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => __trashed-8 [to_ping] => [pinged] => [post_parent] => 0 [post_type] => post [post_mime_type] => [comment_count] => 0 [filter] => raw ) post_email: Done 1: processed Mail fetch complete, 1 emails doing postie_session_end memory at end of email processing: 79111576
ここで注目したいのがpost_titleで、なんか文字化けしてたんですよね。
このログの前にメールのタイトルを処理している記述があるのですが、そこで気づきました。
これ日本語使えないのでは…
タイトルに日本語使えないっぽい
そんなわけで4パターンのメール投稿を試してみました。
- ① タイトル:英語 本文:英語
- ② タイトル:英語 本文:日本語
- ③ タイトル:日本語 本文:英語
- ④ タイトル:日本語 本文:日本語
結果としては
○ ①と②
× ③と④
でした。
これすなわち日本語タイトルは対応していないという結論に至りました。よくよく思い出すと、プラグインをテストしたときのタイトルは「test」でしたねぇ…(遠い目)
ちなみに、Postieはメールから送信された情報を元にWordPressで投稿できる形に配列が組まれているのですが、keyがpost_titleのvalueがtmptitleのとき投稿は即ゴミ箱行きになります。出来損ないの投稿とみなされてスクラップです。
補足:他の原因のエラーも
Postieさん日本語タイトル以外にもエラーになることがあります。一番多いケースは、添付画像の総容量が多すぎてメモリオーバーになってしまうことですかね。
公式フォーラムでも話が出てますが、WordPressのアップロード限界容量を超えたメールはエラーになるとのこと。
これに関してはwp-configをちゃちゃっと編集しちゃえばOKなので問題なしと。
まとめ
ということでPostie、自分の環境では日本語タイトルがエラーになってしまい投稿できなかったです。自分ひとりのケースなので他の方はなんの問題もなく使用されているかもしれません。ですが調べた限りこのケースでのエラーについて言及されている記事がありませんでしたのでここに残しておきます。
あと、もしこの問題の解決策ご存知の方いらっしゃいましたら何卒ご教授の程よろしくお願いいたします…
コメント:
原因は同じかわかりませんが、下記環境で動きました
WordPress 5.4.2 (KADAN テーマ)
PHP v7.4.7
MYSQL v5.7.28-log
Postie 1.9.53 投稿チェック間隔5分 1分だと同じ不具合
コメント頂きありがとうございます!
プラグインアップデートなどで投稿可能になったのでしょうか…
検証できるときにしてみたいと思います