Python smtplib e molteplici messaggi per connessione
Domanda
Recentemente sto studiando la libreria client smtplib smtp per Python, ma non ho potuto trovare alcun riferimento al protocollo PIPELINING contro i server SMTP che lo supportano. C'è qualcosa che mi manca? Non è ancora implementata forse? Eventuali altre implementazioni, piuttosto che smtplib con PIPELINING abilitati?
Grazie
Soluzione
C'è qualcosa che mi manca?
Molto probabilmente.
In poche parole PIPELINING
sta inviando comandi SMTP senza attendere le risposte. Essa non tende a essere attuato perché i benefici sono marginali e aumenta la complessità di stati di errore.
Dal tuo commento, sembra come se siete preoccupati che un solo messaggio verrà inviato attraverso una connessione. Questo non è PIPELINING
.
supporti smtplib
utilizzando la stessa connessione per più messaggi. Si può solo chiamare sendmail
più volte. Per es.
s = smtplib.SMTP("localhost")
s.sendmail("foo@bar.baz",["bar@foo.baz"],message1)
s.sendmail("foo@bar.baz",["baz@foo.baz"],message2)
Aggiornamento finale
che è il numero massimo di messaggi che posso aggiungere "per-connection"?
Questa varia tra i demoni SMTP. Exim sembra di default a 1000.
devo fare questo in modo sincrono o non smtplib eventualmente gestire le chiamate di sendmail contemporanea?
La chiamata al metodo sendmail
bloccherà fino al completo, le chiamate saranno sequenziali.
Se avete bisogno di parallelizzare allora si potrebbe aver bisogno di guardare threading, multiprocessing o forse contorto. Ci sono molti approcci possibili.
Il numero di connessioni simultanee si è permesso può anche essere un elemento di configurazione del demone SMTP.