I also see that the limit per message is 50 recipients, regardless of being a free account or a paid business account (as mine is). This I discovered because we have an app that needs to pull names from a spreadsheet and send a message those those users (these are users brought together only on the spreadsheet, and it can change, so a Google Group is not a good solution). With only 66 users (and it will likely never go above 100), I see no problem in making a throttling function that wraps around sendEmail() and sends to a portion of the users and sends the rest back into itself to continue processing until all have been sent the message. Here is my function (which does not account for CC or BCC, so keep that in mind if you plan to use it):
function email_throttle(recipients, subject, message, options) {
// we are not parsing any passed options, so if you use CC or BCC, those people can receive multiple messages
options = typeof options !== 'undefined' ? options : false; // options is optional
// if recipients is a string, convert to array
if (typeof recipients == 'string') {
recipients= recipients.split(',');
}
var numRecipients = recipients.length;
if (numRecipients > 40) { // using 40 as a buffer, in case of CC and BCC in options
// split out first group and send the email
var theseRecipients = recipients.splice(0, 40);
GmailApp.sendEmail(theseRecipients, subject, message, options);
// send remaining recipients to email_throttle (recursive call to this function)
email_throttle(recipients, subject, message, options);
} else { // fewer than 40 recipients left
if (numRecipients > 0) { // at least 1 recipient
GmailApp.sendEmail(recipients, subject, message, options);
}
}
}