wordpressのKtai Entry(メール投稿プラグイン)でRFCに準拠していないフォーマットのメールアドレスでも投稿できるようにする方法

2


e-mail symbol

WordPressのKtai Entryプラグインは外出先からメールでブログ投稿できるので、
PCを持っていないエンドユーザーでも気軽に使えるので便利に使わせてもらってます。

しかし先日、あるメールアドレスの方だけ投稿が反映されないと連絡があり、
調べてみると.(ドット)が連続してるRFC違反の携帯メールアドレスでした。。

最近見ないアドレスなので、あまり遭遇する機会が無いかもしれませんが自分用に対応方法をメモ。

(失敗)管理画面からメールアドレスを”(ダブルクォーテーション)でくくる

管理画面から投稿ユーザーのメールアドレスをダブルクォーテーションでくくる方法はエラーメッセージが出て保存できず。。

これはダメなのでプラグインを直接いじる事にしました。

余談ですが、メールソフトによっては ”〜..〜”@docomo.ne.jp で送信できますよね。

Ktai Entryを編集する

プラグイン内の inc/post.php 499行目付近の以下のコードを変更します。

変更前

private function validate_address($address) {
	$user_id = 0;
	$user = get_user_by_email($address);
	if ($user) {
		$user_id = $user->ID;
	}
	$user_id = apply_filters('ktai_validate_address', $user_id, $address);
	if (! $user_id) {
		return NULL;
	}
	return $user_id;
}


変更後

private function validate_address($address) {
	$user_id = 0;
	$user = get_user_by_email($address);
	if (!$user) {
		$address_quote = preg_replace('/^"(.*?)"@(.*?)/i', '$1@$2', $address);
		$user = get_user_by_email($address_quote);
	}
	if ($user) {
		$user_id = $user->ID;
	}
	$user_id = apply_filters('ktai_validate_address', $user_id, $address);
	if (! $user_id) {
		return NULL;
	}
	return $user_id;
}

これで無事に投稿できるようになりました。

以上、wordpressのKtai Entry(メール投稿プラグイン)でRFCに準拠していないフォーマットのメールアドレスでも投稿できるようにする方法でした。


Comments (2)

  • これは、携帯電話からメールサーバーに届くときはダブルクォート付きのアドレスに変換される (結果として RFC に適合したアドレスになっている) ということでしょうか。
    WordPress の管理パネルではダブルクォート付きのアドレスは入れられませんから、ダブルクォートがあれば外す処理はあった方がいいですね。
    ただし、ご提案の正規表現は少し不備があるので、もうちょっと検討してみたいと思います。

  • linja より:

    >ゆりこ@プラグイン作者さん

    そうですね。
    validate_address関数に渡る$addressの値が
    「”example..example”@docomo.ne.jp」というRFC に適合したアドレスとして取り出されていました。

    そのため、ユーザーの登録メールアドレスかどうかを判断するロジックで
    データが見つからず公開できない状態になっていました。

    本体側で対応していただけると大変助かります!
    よろしくお願いします。

  • Post a comment