sendgrid-java icon indicating copy to clipboard operation
sendgrid-java copied to clipboard

Guidance on sending emails to many subusers (100+)

Open arkitex opened this issue 5 years ago • 4 comments

Issue Summary

I'm trying to use this library to send emails on behalf of many subusers - in the hundreds, if not thousands. It appears that the primary pattern is to use new Sendgrid(apiKey) in order to send - but that creates a FixedThreadPool with 8 threads. If I wish to send emails to even 10 subusers, this means I'll have 10 FixedThreadPools with 8 threads each - not desirable.

Is there any guidance on how to appropriately use this library for the above use-case? It looks like we could implemented SendgridAPI, but I'm hoping to avoid that if possible.

I'd use on-behalf-of, but that is not supported for mail.send.

Technical details:

  • sendgrid-java version: 4.4.8

arkitex avatar May 13 '20 18:05 arkitex

Definitely very curious how this use case is handled!

leothekim avatar May 21 '20 18:05 leothekim

If all that's needed it to be able to set the On-Behalf-Of header at the request-level, then it's a pretty simple change to make SendGrid.api() merge the request headers with the client-level request headers. Then you could just do something like:

...
request.addHeader("On-Behalf-Of", "some-user");
Response response = sg.api(request);
...

Would this work for your usecase?

childish-sambino avatar May 21 '20 20:05 childish-sambino

I'm trying to actually send emails, and the Sendgrid docs claim that On-Behalf-Of is not supported for mail.send :(: https://sendgrid.api-docs.io/v3.0/how-to-use-the-sendgrid-v3-api/on-behalf-of

arkitex avatar May 21 '20 21:05 arkitex

Ah, TIL. We could update the library to lazily-create the fixed thread pool, so it would be created on the first call to SendGrid.attempt, which you don't have to use and could just call SendGrid.api() instead.

childish-sambino avatar May 22 '20 15:05 childish-sambino