Есть что-то, чего мне не хватает?
Вполне возможно.
Проще говоря, PIPELINING
отправляет SMTP-команды без ожидания ответов. Это не имеет тенденцию быть реализованным, потому что преимущества являются незначительными, и это увеличивает сложность состояний ошибки.
Из вашего комментария звучит так, как будто вы беспокоитесь, что через одно соединение будет отправлено только одно сообщение. Это не PIPELINING
.
smtplib
поддерживает использование одного и того же соединения для нескольких сообщений. Вы можете просто позвонить sendmail
несколько раз. Э.Г.
s = smtplib.SMTP("localhost")
s.sendmail("foo@bar.baz",["bar@foo.baz"],message1)
s.sendmail("foo@bar.baz",["baz@foo.baz"],message2)
Окончательное обновление
какое максимальное количество сообщений я могу добавить "на соединение"?
Это зависит от демона SMTP. Кажется, exim по умолчанию равен 1000.
мне нужно делать это синхронно или smtplib в конечном итоге обрабатывает современные вызовы sendmail?
Вызов метода sendmail
будет блокирован до завершения, ваши вызовы будут последовательными.
Если вам нужно распараллелить, то вам, возможно, придется посмотреть на многопоточность, многопроцессорность или, возможно, скрученность. Есть много возможных подходов.
Количество разрешенных одновременных подключений также может быть элементом конфигурации демона SMTP.