PXSMail with Akismet 日本語版

コンタクトスパムって聞いたことがありますか? なに?聞いたことがない!w まぁ、私が言い出したんですけどね。 :mrgreen:

結構ウザいですよ、ポロポロ届くと・・・。そんな時、kohakuさんがいいプラグインを教えてくださいました。

WP Plugin: PXSMail with Akismet

コンタクトフォーム(メールフォーム)を簡単に設置できるプラグインです。PXSMail Pluginを基にAkismetをくぐらせるように改造したものらしいのですが、スパム封じに定評があるAkismetを利用するのですから期待は膨らみます。

WordPress plugin Download:
PXSMail with Akismet 日本語版
絶対条件
Akismetを有効化していること

導入方法

1. ファイルを解凍して、pxsmail.phpとpxsmail-ja_*.moの2つをwp-content/pluginsへアップロード。
2. PXS Mail Form,modified for Akismetを有効化する。
3. メールフォーム用に新規ページを作成し、本文中に {mailform}(すべて半角で) と書き込む。
4. 設定 » PXS-Mailで各設定を行なう。

必須項目を記入しないで送信すると外枠が赤色になって警告してくれます。試しにめちゃなアドレスで送信すると「てめー、スパムだな」と怒られました。w

設置例です。 8)

【出くわした問題点】

2007-2-22
IImage-browserと激しく干渉。

Warning: session_start() [function.session-start]: open(/tmp/sess_ee****e****c****bea0af*c*cad2, O_RDWR) failed: Permission denied (13)
in /virtual/...../wp-content/plugins/pxsmail.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /virtual/...../wp-content/plugins/pxsmail.php:1)
in /virtual/...../wp-content/plugins/pxsmail.php on line 1

エラーがずらずら出た。pxsmail.phpの1行目 <?php session_start(); が原因みたい。とりあえず、<?php に修正。

2007-3-19 naoさんのコメントより~

サーバによってはメールが送れなくなるようで・・・。orz
セキュリティとの関係でIImage-Browserにエラーが出るのか? 只今、師匠に問い合わせ中です。 :wink:

以下師匠のメールから引用です。

完全にソース読めてないのですが分かること書きます。

・ご指摘の session_start ですが、WP 中で一回しか使えません。2回目使うとエラーになります。
・session_start を外すとスパム判定されうまく投稿できません。
・しかし、どっかのプラグインに書いてあるときっとうまく動きます。(この場合 Image Browser でしょうか)

基本的に session_start はプラグインで書くたぐいのものではないのでまずはハズすでOKです。 ただし、session_start がどこにもない状態でこのプラグインを動かすと投稿時にハジく仕組みになっています。(Akismet 以外にもスパム対策をいろいろしている)

スパムは Akismet とーせばおそらく大丈夫ということで、この session 使ったスパム対策をいっさいがっさいこのプラグインからはずしてしまえば、おそらくみんな幸せになります。
# でもちょっと弱くなります。

1. 先頭行の session_start を削除

2. 90行目からの以下の if を削除

  1. if ($_POST['pxscheck'] !== $_SESSION["pxscheck"]) {
  2.       echo $hack_redirect;
  3.       exit();
  4.  }

3. 187行目削除

4. 194行目削除

  1. $_SESSION["pxscheck"] = md5(rand());

5. 241行目からの if 削除

  1. if (!isset($_SESSION["pxscheck"])) {
  2.      $_SESSION["pxscheck"] = md5(rand());
  3.  }

6. 260行目削除

  1. <input type="hidden" name="pxscheck" value="' . $_SESSION["pxscheck"] .'" />

すいません、そらで書いているので間違っているかもしれませんがやってみてください。 nao さんの事象とちょっと話が合わないのですが、おそらくは session の不具合なので、これで直るような気もします。

お忙しいところありがとうございました、ひろまささん。
私の環境でこの処置をするとメール送信できませんでしたので、段階を踏んで対処された方がよいかと思います。

参照: CXLVII. セッション処理関数(session)

2007-3-20 naoさんのコメントより~

件名文字化けの件は最初から悩んでました。G-mailとかはバケず、OEなんかではバケる。いろいろとやっても直らなかったので(化けるのは件名だけなので・・)放置していたのです。

今日成功したのでメモ。

46行目あたり、function pxs_callback( $content )

  1. if (empty($_POST['your_subject'])) {
  2.             $subject = get_option('pxs_subject');
  3.             $subject = stripslashes($subject);
  4.             $subject_mm = '';
  5.             } else {
  6.             $subject = $_POST['your_subject'];
  7.             $subject = stripslashes($subject);
  8.             $subject_mm': '.$subject;
  9.             }
  10.            }

こう変更。

  1. if (empty($_POST['your_subject'])) {
  2.             $subject = get_option('pxs_subject');
  3.             $subject = stripslashes($subject);
  4.         $subject = mb_convert_encoding($subject,"UTF-8","auto");
  5.             $subject_mm = '';
  6.             } else {
  7.             $subject = $_POST['your_subject'];
  8.             $subject = stripslashes($subject);
  9.             $subject = mb_convert_encoding($subject,"UTF-8","auto");
  10.             $subject_mm': '.$subject;
  11.             }
  12.            }

一応、バケませんでした。 :o

Top

コメントが 19件あります

コメント RSS を使用するとこの投稿のコメントが確認できます。
TrackBack URI
コメントしてみる?

  1. 1
    Gravatar
    nao さんのコメント
    2007年 3月 19日 14:27

    WP2.1.2環境で以下のように修正したのですが、送信できなくなります。何か解決法はございませんでしょうか?

    IImage-browserと激しく干渉。エラーがずらずら出た。pxsmail.phpの1行目

  2. 2
    Gravatar
    Masayan さんのコメント
    2007年 3月 19日 14:57

    はじめまして、naoさん。

    私の環境では送れるんですけどねぇ・・・。(う~ん)

    以下を確認してください。
    1. エラーコードとか表示されませんか?
    2. 送信成功で送れないならば、他のプラグインとの干渉をチェックする必要があると思います。

  3. 3
    Gravatar
    nao さんのコメント
    2007年 3月 19日 17:51

    Masayanさん、早速のお返事・助言をありがとうございます。

    現象としては、
    <?php session_start(); の時には画像アップロード機能やIImage-browserでエラーがでますが、フォーム自体は問題なく送信できています。

    しかし、<?php に修正し、送信を押すと、エラーコード等はでず、ヘッダー部分とその下にContact(ページ名)とだけ表示され何も表示されなくなります。そして送信もされません。
    プラグインはAkismetのみ有効にしても同じです。

    他に、何か考えられる原因はないでしょうか?
    お忙しいところすみませんが、ご教授頂けませんでしょうか。宜しくお願いします。

  4. 4
    Gravatar
    Masayan さんのコメント
    2007年 3月 19日 22:14

    naoさんへ
    本文の対処方法を試してみてください。 8)

  5. 5
    Gravatar
    nao さんのコメント
    2007年 3月 20日 00:42

    Masayanさん、お師匠さん、ご丁寧にご教授いただき本当に有難うございます。おかげさまで本文の対処方法で無事送信できるようになりました。感謝しております。

    それともうひとつ質問させていただきたいのですが・・・
    WinのThunderbirdでは件名も文字化けする事なくメールが受信できるのですが、MacのMailや、転送されたDoCoMoへのメールは件名だけ、文字化けしてしまいます。
    おそらくwp_mail() が日本語のヘッダを Base64 エンコードしていないところにあるのが原因と思いNippon プラグインを入れましたが、MacとDoCoMoでは文字化けします。

    なんども恐縮ですが、また助言頂けませんでしょうか。どうぞよろしくお願いいたします。
    (WP2.2が出れば解決しそうですが・・・)

  6. 6
    Gravatar
    よしとも さんのコメント
    2007年 3月 20日 02:09

     こんばんわ。ひろまささんの記事経由でやってきました。

     naoさんの文字化けの減少に覚えがあったので調べてみたのですが、メール送信で件名のエンコードをしていないのが原因のようです。本文が大丈夫なのは、Content-Type というメールヘッダを追加しているためです。

     Nippon で直らないのは、メールの送信に wp_mail という関数を使っていないためです。(作者のコメント参照)この関数を使い、なおかつ PHP の mb_send_mail という組み込み関数が有効になっていれば、メールの文字化けは解消すると思われます。

     今度、もう少し突っ込んだ解説記事を書いてみようと思います。

  7. 7
    Gravatar
    Masayan さんのコメント
    2007年 3月 20日 12:53

    ○naoさん
    また本文に小細工を書いてみました。今度は師匠ではないので何かしら起こるかも・・・。 :x

    ○よしともさん
    はじめまして。

    なるほど、それで本文はバケなかったのですね。(ふむふむ)

    もう少し突っ込んだ解説記事を書いてみようと思います。

    待ってま~す。 :arrow-d:

  8. 8
    Gravatar
    nao さんのコメント
    2007年 3月 21日 00:28

    Masayanさん、よしともさん助言ありがとうございます。本日再度◆2007-3-19で記載いただいた、1~6の処置を試したところ、不思議な事に、送信できなくなってしまいました。昨日は送信できたのに、、と不思議に思い色々段階を踏んで対処しましたところ、
    1. 先頭行の session_start を削除
    2. 90行目からの以下の if を削除
    3. 187行目削除
    の3つを行えば、無事送れるようになりました。(昨日送信出来たのはなんだったのでしょうか、、、)訂正させていただきます。

    それと、◆2007-3-20で記載いただいた65行目からの修正変更も試しましたが、やはりMacのMailとDoCoMoでは文字化けが解消できませんでした。ん~Masayanさんは成功したんですよねぇ。。いろいろサーバー環境とか影響するんでしょうか。こちらはXREAです。

    とりあえず、試した結果をご報告させていただきます。いろいろ助言いただき本当にありがとうございました。

  9. 9
    Gravatar
    Masayan さんのコメント
    2007年 3月 21日 16:50

    いろいろと難しいですねぇ。がんばってみてください。最終的には誰もが自分で解決するしかないですから・・・。 :arrow-d:

    # アドバイスすることが非常に難しいことを再確認しました。 :arrow:

  10. 10
    Gravatar
    nao さんのコメント
    2007年 3月 21日 21:25

    いえいえ十分すぎるアドバイスでした。いろいろとありがとうございました。また勉強しにこさせてもらいます~! :arrow-d:

  11. 11
    Gravatar
    chinpan さんのコメント
    2007年 7月 29日 17:23

    PXSMail with Akismet 日本語版をためさせていただいてます。しかしうまいことメールが送れません。エラーは

    Fatal error: Call to undefined function: akismet_http_post() in /home/httpd/vhosts/t-sports.jp/httpdocs/wp-content/plugins/pxsmail.php on line 167

    と出ます。 :arrow:

    一応、sessionもはずして試しましたがエラー出力をしなくなったのですがメールは送れていません。お忙しい中申し訳ないですが助言を頂けないでしょうか? :cry:

    wordpressのバージョンはWordPress ME2.0.10です。

  12. 12
    Gravatar
    Masayan さんのコメント
    2007年 7月 30日 08:49

    はじめまして、chinpanさん。

    pxsmail.php on line 167ということは、akismet関連みたいですね。もちろん、akismetは有効化されているとは思いますが、そのあたりの確認をされてはいかがでしょうか?

    もし外していた場合は、ボクの手に負えない気がします。orz

  13. 13
    Gravatar
    chinpan さんのコメント
    2007年 8月 7日 12:11

    そうですか・・・(^^;akismetの有効化はしてあるんですけどね~ :arrow:
    違うメールフォームで試してみます。忙しい中、ありがとうございました :arrow-d:

  14. 14
    Gravatar
    mako さんのコメント
    2008年 4月 7日 05:04

    フォームが英語のままになっているのですが日本語にするにはどのようにすればよいのでしょうか?
    pxsmailとpxsmail-ja_UTFをプラグインに入れています。
    サーバー:xrea
    PHPバージョン:5

    何卒宜しくお願いします

  15. 15
    Gravatar
    Masayan さんのコメント
    2008年 4月 7日 08:58

    はじめまして、makoさん。
    フォームだけが英語のままなんでしょうか? 管理画面もじゃないですか?
    こちらの私のコメントのことを確認ください。もし、’ja’であれば、ja.moとリネームしてください。
    それ以外でしたら、ちょっとわからないです。 :oops:

    # コンタクトフォームなら、Contact Form 7をお勧めしますよ。
    # WPのバージョンも明記した方がいいですよ。 :wink:

  16. 16
    Gravatar
    mako さんのコメント
    2008年 4月 8日 03:59

    日本語化できました。
    初めてWordPress使うので色々戸惑うばかりです。
    有難う御座いました。

Top

コメントをどうぞ

あなたの情報 (必須) help

Top

Web Services by Yahoo! JAPAN