And I see no evidence that Bulk Mailer is actually doing anything differently than normal. Everything on SendGrid activity still looks like it’s send a singular email, if it in fact ever actually makes it to sendgrid which I’m not convinced it does.
At the very top of the log.txt file that you attached, you’ll see this:
[30/06/2022 20:27:22]  Successfuly processed page 0, with output: Array ( [headers] => Requests_Utility_CaseInsensitiveDictionary Object ( [data:protected] => Array ( [server] => nginx [date] => Thu, 30 Jun 2022 20:27:22 GMT [content-length] => 0 [x-message-id] => pNR1TKehS76f2V0WO6L7vA [access-control-allow-origin] => https://sendgrid.api-docs.io [access-control-allow-methods] => POST [access-control-allow-headers] => Authorization, Content-Type, On-behalf-of, x-sg-elas-acl [access-control-max-age] => 600 [x-no-cors-reason] => https://sendgrid.com/docs/Classroom/Basics/API/cors.html [strict-transport-security] => max-age=600; includeSubDomains ) ) [body] => [response] => Array ( [code] => 202 [message] => Accepted ) ...
That is the success response from Sendgrid for the first 1000 users (like I said, it’s one call for every 1000 users). There are a couple more success responses between that one and 20:36, when we get the error about the invalid address.
Because of that invalid address, Sendgrid refuses to accept the API call for the full “page” of recipients (up to 1000 users).
As far as I can tell, my plugin is doing its job. Now it’s up to you to figure out which user has a messed up email address, which is causing Sendgrid to drop the API call. If you run the bbpnns dry-run tool and send me the output, I can try to find out which one for you.
Note that you can also check the headers for a message that you do receive while the Bulk Mailer plugin is active and you’ll see the plugin’s signature: