Send email with custom tokens on event?
If "mahjong" is just an arbitrary object type, you need to declare it to Rules using hook_rules_data_info and specify the "token type" so that Rules knows what to pass to the token API.

But if the "mahjong" object is a Drupal User entity, you shouldn't need to implement hook_token_* at all.

Instead, when you define your Rules event, the argument should be of type "user". Rules will then know what fields are defined on the entity.