ブログ作成時、管理者にメールしない方法(2)
2009 年 6 月 24 日 in プラグイン
ブログ作成時、管理者にメールしない方法
の続きです。
【調査】
案内メールの送信はそれぞれ wp-admin/wpmu-edit.php の中の
167: wp_new_user_notification($user_id, $password);
179: wpmu_welcome_notification( $id, $user_id, $password, $title, array( “public” => 1 ) );
で行っているようです。wpmuadminedit から書き換えないといけなくなるのでプラグインを使ってこの場所の実行を回避することは難しそうです。
wp_new_user_notification 関数は wp-includes/pluggable.php で
wpmu_welcome_notification 関数は wp-includes/wpmu-functions.php で
宣言されています。幸いなことに wp_new_user_notification を宣言している手前で
wp-includes/pluggable.php
1097: if ( !function_exists(‘wp_new_user_notification’) ) :
と書かれていたり、wpmu_welcome_notification関数の中で
wp-includes/wpmu-functions.php
1512: if( !apply_filters(‘wpmu_welcome_notification’, $blog_id, $user_id, $password, $title, $meta) )
1513: return false;
などとなっていました。これならプラグインで回避できそうです。
プラグイン名は「Disable Welcome Notification」に決定しました。
他に「welcome_notification」を名乗る関数もなさそうです。
ブログの新規作成時にメールが送信されるのは、先ほどのすぐ手前
wp-admin/wpmu-edit.php
178 wp_mail( get_site_option(‘admin_email’), sprintf(__(‘[%s]
New Blog Created’), $current_site->site_name), $content_mail, ‘From: “Site Admin” <’ . ge
t_site_option( ‘admin_email’ ) . ‘>’ );
があるためです。wp_mailなんでこれもPHPMailerですね。
wp_mail は wp-include/plaggable.php で定義されていますが、未設定のデータをデフォルトで補完するようになっていて途中でreturnするような処理がありません。Sendする直前でphpmailer_init のアクションを定義できるようですがここは Subject の件名をISO-2022-JPエンコードするところだと思います。
メールのヘッダを見るとSubjectはUTF-8エンコードされていて一行になっているようです。RFC違反になりそうなのであらためてチェックしたいと思います。