NET :: SMTP :: Pipelining

Invia e-mail utilizzando l'estensione con tubazione ESMTP
Scarica ora

NET :: SMTP :: Pipelining Classifica e riepilogo

Annuncio pubblicitario

  • Rating:
  • Licenza:
  • Perl Artistic License
  • Prezzo:
  • FREE
  • Nome editore:
  • Marc Beyer
  • Sito web dell'editore:
  • http://search.cpan.org/~marcb/

NET :: SMTP :: Pipelining Tag


NET :: SMTP :: Pipelining Descrizione

Invia e-mail utilizzando l'estensione ESMTP PIPELINING Net :: SMTP :: pipelining è un modulo Perl che implementa la parte client del prolungamento PIPELINING SMTP, come specificato da RFC 2920 (http://tools.ietf.org/html/rfc2920). Si estende il popolare modulo di Net :: SMTP sottoclasse, è possibile utilizzare Net :: SMTP :: pipelining oggetti come se fossero regolari Net :: SMTP objects.SMTP PIPELINING aumenta l'efficienza di inviare messaggi su una connessione di rete ad alta latenza riducendo il numero di comando-risposta di andata e ritorno in comunicazione client-server. Per evidenziare il modo in cui differisce SMTP regolari da PIPELINING (e anche il modo di lavorare con questo modulo), ecco un confronto ($ s è il Net :: SMTP o Net :: SMTP :: oggetto pipelining, $ dal mittente e $ al destinatario): SMTP regolare utilizzando Net :: SMTP: Perl codice client di risposta di comando di Server $ s-> elettronica ($ da); MAIL FROM: 250 mittente ok $ s-> a ($ a); RCPT TO: 250 destinatario ok $ s-> Dati (); DATI 354 Avvio di posta, fine con CRLF.CRLF $ s-> DataSend ( "testo"); testo $ s-> dataend (); . 250 Messaggio acceptedSending questo messaggio richiede 4 scambi di andata e ritorno tra client e server. In confronto, pipeline SMTP utilizzando Net :: SMTP :: pipelining (per l'invio di più di un messaggio) richiede solo 2 viaggi di andata e per l'ultimo messaggio e 1 di andata e ritorno per gli altri: Perl di risposta del server di comando Codice cliente $ s-> pipeline ({posta => $ da, a => $ a, data => "testo",}); MAIL FROM: RCPT TO: DATI 250 mittente ok 250 destinatario ok 354 posta all'inizio, alla fine con CRLF.CRLF testo . $ S-> pipeline ({posta => $ da, a => $ a, data => "testo",}); MAIL FROM: RCPT TO: DATI 250 Messaggio inviato 250 Mittente ok 250 destinatario ok 354 posta all'inizio, alla fine con il testo CRLF.CRLF. $ S-> pipe_flush (); 250 sentAs messaggio che si può vedere, la chiamata gasdotto non completano l'invio di un singolo messaggio. Questo perché un.) RFC 2920 mandati che i dati siano l'ultimo comando di un gruppo di comando pipeline e b.) È a questo punto incerto se un altro messaggio verrà inviato in seguito. Se un altro messaggio viene inviato subito dopo, la posta, comandi RCPT e dati per questo messaggio può essere incluso nello stesso gruppo di comando come il testo del messaggio precedente, risparmiando così un round-trip. Se si desidera gestire i messaggi uno dopo l'altro senza mescolare nello stesso gruppo di comando, è possibile chiamare pipe_flush dopo ogni chiamata al gasdotto, che funzionano bene ma essere meno efficiente (la comunicazione client-server richiede quindi due round-viaggi al messaggio invece di uno) .SYNOPSIS utilizzo Net :: SMTP :: pipelining; my $ smtp = Net :: SMTP :: Pipelining-> nuovo ( "localhost"); my $ mittente = q (sender@example.com); la mia (@ successo, @ fallito); per il mio indirizzo di $ (q (s1@example.com), q (s2@example.com), q (s3@example.com)) {$ SMTP-> pipeline ({posta => $ mittente, a => $ indirizzo, data => qq (Da: mittente $ Questa è una mail a $ indirizzo),}) o spingere @failed, @ {$ SMTP-> pipe_rcpts_failed ()}; spingere @successful, @ {$ SMTP-> pipe_rcpts_succeeded ()}; } $ SMTP-> pipe_flush () o spingere @failed, @ {$ SMTP-> pipe_rcpts_failed ()}; spingere @successful, @ {$ SMTP-> pipe_rcpts_succeeded ()}; stampare "inviata con successo ai seguenti indirizzi: @successful "; Mettere in guardia" non è riuscito a inviare @failed "Se scalare (@failed)> 0; # errore più intricata la gestione if ($ SMTP-> pipeline ({posta => $ mittente, a => $ indirizzo, data => qq (da: $ mittente! Questa è una mail a $ indirizzo),})) {$ i miei errori = $ SMTP-> pipe_errors (); per il mio $ e (@ $ errors) {print "è verificato un errore :, abbiamo detto $ e -> {comando}"; stampare "e il server ha risposto $ e -> {code} $ e -> {messaggio} " } } Requisiti: · Perl.


NET :: SMTP :: Pipelining Software correlato