NET :: SMTP :: Pipelining

E-mail verzenden met behulp van ESMTP Pipelining-extensie
Download nu

NET :: SMTP :: Pipelining Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Marc Beyer
  • Uitgever website:
  • http://search.cpan.org/~marcb/

NET :: SMTP :: Pipelining Tags


NET :: SMTP :: Pipelining Beschrijving

Stuur e-mail via ESMTP PIJPLEIDING extensie Net :: SMTP :: Pipelining een Perl module implementeert de client van de SMTP PIJPLEIDING extensie, zoals gespecificeerd in RFC 2920 (http://tools.ietf.org/html/rfc2920). Het breidt de populaire Net :: SMTP-module door subklassen, kun je gebruik maken van Net :: SMTP :: Pipelining objecten als waren zij regelmatig Net :: SMTP objects.SMTP PIJPLEIDING verhoogt de efficiëntie van het verzenden van berichten over een high-latency netwerkverbinding door vermindering van het aantal commando-respons round-trips in client-server communicatie. Om de manier waarop reguliere SMTP verschilt van PIJPLEIDING markeren (en ook de manier van werken met deze module), hier is een vergelijking ($ s is het Net :: SMTP of Net :: SMTP :: Pipelining object, $ van de afzender en $ aan de ontvanger): Regelmatige SMTP met behulp van Net :: SMTP: Perl code Client commando Server respons $ s-> mail ($ uit); MAIL FROM: 250 Afzender ok $ s-> om ($ to); RCPT TO: 250 Ontvanger ok $ s-> data (); DATA 354 Start mail, eindigen met CRLF.CRLF $ s-> gegevensVerzend ( "tekst"); tekst $ s-> dataend (); . 250 Message acceptedSending dit bericht vereist 4 round-trip uitwisselingen tussen client en server. Ter vergelijking, Pipelined SMTP met behulp van Net :: SMTP :: Pipelining (bij het verzenden van meer dan één bericht) vereist slechts 2 ronde-trips voor het laatste bericht en 1 round-trip voor de anderen: Perl code Client commando Server respons $ s-> pijplijn ({mail => $ van, naar => $ om, data => "tekst",}); MAIL FROM: RCPT TO: DATA 250 Afzender ok 250 Ontvanger ok 354 Start mail, eindigen met CRLF.CRLF tekst. $ S-> pipeline ({mail => $ van, naar => $ om, data => "tekst",}); MAIL FROM: RCPT TO: DATA 250 Bericht verzonden 250 Afzender ok 250 Ontvanger ok 354 Start mail, eindigen met CRLF.CRLF tekst. $ S-> pipe_flush (); 250 Message sentAs u kunt zien, is de pijplijn oproep niet voltooien het verzenden van één bericht. Dit komt omdat een.) RFC 2920 mandaten die DATA zijn de laatste opdracht in een pijplijn commando groep en b.) Is het op dit moment onzeker of een ander bericht achteraf wordt verzonden. Als een ander bericht onmiddellijk daarna wordt verzonden, wordt de POST, RCPT en DATA commando's voor dit bericht kan worden opgenomen in dezelfde commando groep als de tekst van het vorige bericht, waardoor het opslaan van een round-trip. Als u wilt verwerken berichten achter elkaar, zonder ze te mengen in hetzelfde commando groep, kunt u pipe_flush bellen na elk gesprek aan pijpleiding, dat zal goed werken, maar zijn minder efficiënt (de client-server communicatie vereist dan twee round-trips per bericht in plaats van één) .SYNOPSIS gebruik Net :: SMTP :: Pipelining; mijn $ smtp = Net :: SMTP :: Pipelining-> new ( "localhost"); mijn $ afzender = q (sender@example.com); mijn (@ succesvol, @ mislukt); voor mijn $ adres (q (s1@example.com), q (s2@example.com), q (s3@example.com)) {$ smtp-> pipeline ({mail => $ afzender, naar => $ adres, data => qq (Uit: $ afzender Dit is een email naar $ adres),}) of duw @failed, @ {$ smtp-> pipe_rcpts_failed ()}; duwen @successful, @ {$ smtp-> pipe_rcpts_succeeded ()}; } $ Smtp-> pipe_flush () of druk @failed, @ {$ smtp-> pipe_rcpts_failed ()}; duwen @successful, @ {$ smtp-> pipe_rcpts_succeeded ()}; afdrukken "met succes verzonden naar de volgende adressen: @successful "; Waarschuwen" Mislukt sturen naar @failed "Als scalar (@failed)> 0; # Meer ingewikkelde foutafhandeling if ($ smtp-> pipeline ({mail => $ afzender, naar => $ adres, data => qq (Uit: $ afzender! Dit is een email naar $ adres),})) {my $ errors = $ smtp-> pipe_errors (); voor mijn $ e (@ $ fouten) {print "Er is een fout opgetreden :, we zeiden $ e -> {commando}"; printen "en de server antwoordde $ e -> {code} $ e -> {bericht} " } } Vereisten: · Perl


NET :: SMTP :: Pipelining Gerelateerde software