signature error between master-account/sub-account transfer

I used this API endpoint:
https://binance-docs.github.io/apidocs/spot/en/#universal-transfer-for-master-account
with my master account API key and secret (internal transfer enabled)
I can transfer from MASTER SPOT Account to MASTER FUTURE Account without error,
but when I tried to transfer from MASTER SPOT Account to SUBACCOUNT SPOT Account, a signature error is returned

parameters I used are:
fromEmail=‘aaaabbbb@gmail.com’,
toEmail=‘aaaabbbb+test@gmail.com’,
fromAccountType=‘SPOT’,
toAccountType=‘SPOT’,
asset=‘USDT’,
amount=2.0

What’s the exact signature error? Have consulted this forum for same error message?

Maybe related with encoding of + in the toEmail field

You are right!
I create another subaccount with normal email (without ‘+’) and it succeeds.
Still I want to know how to fix this signature error caused by ‘+’, I failed to find a valid replacement with ‘+’
(error code: APIError(code=-1022): Signature for this request is not valid.)