After some investigation, I guess this problem may be related to the conflict between the notification_email and reply_by_email_addresses. When the two variables are both configured, the outgoing email seems using reply_by_email_addresses as their from: address, which may be related to the code below:
However, when I switch the notification email to office 365 with the similar SMTP configuration, the email sends without any problem.
#DISCOURSE_SMTP_ADDRESS: outlook.office365.com
#DISCOURSE_SMTP_AUTHENTICATION: login
#DISCOURSE_SMTP_ENABLE_START_TLS: true
#DISCOURSE_SMTP_PORT: 587
#DISCOURSE_SMTP_USER_NAME: 365@domain.tld
#DISCOURSE_SMTP_PASSWORD: ***
Guessing the reason for this different behavior may be that office365 does not verify the from: field when sending mail, but only rewrites the from: field to the username of the office365 account when sending mail, and QQ Exmail will verify the from field of the sent mail, while incorrect from: field could cause the 501 error mentioned above.