After my testing, it works fine, and the issue you're having may be that you don't get the token back after granting permission, or the value of the scope is wrong, below I share my testing process for your reference.
The first is to grant app application permissions.
The next step is to get the token and pay attention to the value of the scope.
After successfully obtaining the token, you can parse the token in the jwt.ms, this is my parsing result.
However, for sending messages, you need to use delegated permissions, as application permissions are only used to import messages.
Please use delegated permissions (ChannelMessage.Send), get a token through the Auth code flow, and send an email. Or it's easier to use Graph explorer.
For more information, please refer to this link:
https://learn.microsoft.com/en-us/graph/api/channel-post-messages?view=graph-rest-1.0&tabs=http
Hope this helps.
If the reply is helpful, please click Accept Answer and kindly upvote it. If you have additional questions about this answer, please click Comment.