Не пойму преимущества от второго метода - лишь сложности по формированию пачек.
- От SQL нужно получить полный набор данных - массив структур
- Создать два канала - для отправки структур на обработку и получение результата обработки
- Создать фиксированное число горутин-воркеров (вас быстро посчитают спамером, если вы в свои несколько сотен тысяч потоков посылать письма будете), слушающих канал со структурами, отправляющие данные по SMTP и рапортующие результаты в обратный канал
- Циклом for наскармливать в канал массив структур.
Вот простой пример описывающий такой тип задач
https://gobyexample.ru/worker-pools.html
Если данных действительно слишком много для получения одним запросом, придется использовать курсор.