I have an excel sheet of 5000 email recipients (no names, just emails) and a form template for the body of an email. What would be considered the best way to send out these emails via Salesforce? I know there's a limit of ~5k emails, but we can send in batches. Would an api script via DevConsole be best? Thanks for your advice.
Tracy
certified since '09
#Salesforce Developer #Salesforce Admin
Hi Tracy - yes, Apex Messaging.sendEmail with SingleEmailMessage.setToAddresses() is the right native fit for RAW emails (no records needed, and with no names a static body needs no merge). Two refinements:
1. Don't run it from Dev Console Execute Anonymous - that's a single synchronous shot with no restartability and it can hit governor limits. Use Batch Apex (or Queueable) and chunk it: up to 100 addresses per SingleEmailMessage, so ~50 emails total.
2. Mind the cap - it's 5,000 EXTERNAL addresses/day per org for Apex single email (the error is SINGLE EMAIL LIMIT EXCEEDED). 5,000 fits in one day but leaves zero headroom, so if anything else in the org sends email that day you'll blow it. Safer to split across two days or run it first thing.
The bigger flag though: Salesforce's transactional email isn't a bulk-marketing engine. 5,000 near-cold sends from raw addresses can dent your org's deliverability/reputation, and you get NO unsubscribe link, bounce handling, or open tracking. If this is marketing/newsletter, a real platform (Account Engagement/Pardot, Marketing Cloud, or even Mailchimp) is the right call - better inbox placement + built-in CAN-SPAM unsubscribe.
If you'd rather stay native and no-code: import the 5,000 as Leads, build a list view, and use Lightning 'List Email' with your template - same 5,000/day cap, but zero Apex.
If this helps, please mark it as the Best Answer so it helps the next person 🙂