Net :: smtp :: pipelining

שלח דוא"ל באמצעות סיומת צינורות ESMTP
הורד עכשיו

Net :: smtp :: pipelining דירוג וסיכום

פרסומת

  • Rating:
  • רישיון:
  • Perl Artistic License
  • מחיר:
  • FREE
  • שם המפרסם:
  • Marc Beyer
  • אתר האינטרנט של המוציא לאור:
  • http://search.cpan.org/~marcb/

Net :: smtp :: pipelining תגים


Net :: smtp :: pipelining תיאור

שלח דוא"ל באמצעות סיומת צינורות ESMTP Net :: SMTP :: Pipelining הוא מודול Perl אשר מיישמת את צד הלקוח של הרחבת צינורות SMTP, כפי שצוין על ידי RFC 2920 (http://tools.ietf.org/html/rfc2920). זה מרחיב את המודול הפופולרי :: מודול SMTP על ידי subclassing אותו, אתה יכול להשתמש Net :: SMTP :: צנרת אובייקטים כאילו הם היו רגילים נטו :: אובייקט SMTP.SpTP Pipelining מגדיל את היעילות של שליחת הודעות על חיבור רשת גבוהה חביון על ידי צמצום מספר התגובה של תגובת הפקודה בתקשורת שרת הלקוח. כדי להדגיש את הדרך רגילה SMTP שונה צינורות (וגם את הדרך של עבודה עם מודול זה), הנה השוואה ($ s הוא net :: smtp או net :: smtp :: pipelining אובייקט, $ משולח ו $ אל הנמען): SMTP רגיל באמצעות Net :: SMTP: Perl קוד לקוח פקודה שרת תגובה $ S-> דואר ($ מ); דואר מ: 250 שולח OK $ S-> ($ ל); RCPT אל: 250 נמען OK $ S-> נתונים (); נתונים 354 הפעל דואר, סיום עם CRLF.CRLF $ S-> Datasend ("טקסט"); טקסט $ S-> DATAND (); . 250 הודעה התקבלו הודעה זו דורשת 4 חילופי טיול בין הלקוח לשרת. בהשוואה, Piptined SMTP באמצעות Net :: SMTP :: Pipelining (בעת שליחת יותר מאשר הודעה אחת) רק דורש 2 נסיעות עגולות עבור ההודעה האחרונה 1 טיול עגול עבור אחרים: Perl קוד לקוח פקודה שרת תגובה $ s-> צינור ({דואר => $ מ, to => $ ל, נתונים => "טקסט",}); דואר מ: RCPT אל: נתונים 250 שולח OK 250 נמען OK 354 התחל דואר, סוף עם CRLF.CRLF טקסט. $ S-> צינור ({דואר => $ מ, to => $ ל, נתונים => "טקסט",}); דואר: RCPT אל: נתונים 250 הודעה נשלחה 250 שולח OK 250 נמען OK 354 התחל דואר, טקסט crlf.crlf. $ s-> pipe_flush (); 250 הודעה Sentas אתה יכול לראות, שיחת צינור לא להשלים את שליחת הודעה אחת. זה בגלל א.) RFC 2920 מנדטים כי הנתונים להיות הפקודה האחרונה בקבוצת פקודה pipleined ו- b) זה בשלב זה לא ברור אם הודעה אחרת תישלח לאחר מכן. אם הודעה נוספת נשלחת מיד לאחר מכן, ניתן לכלול את הדואר, הדואר והנתונים עבור הודעה זו באותה קבוצת פקודות כטקסט של ההודעה הקודמת, ובכך חוסכת טיול עגול. אם ברצונך לטפל בהודעות אחד לאחר השני בלי לערבב אותם באותה קבוצת פקודה, אתה יכול להתקשר pipe_flush לאחר כל שיחה לצינור, זה יעבוד בסדר אבל להיות פחות יעיל (התקשורת לשרת הלקוח דורש שני נסיעות עגולות לכל הודעה במקום אחד) .Synopsis להשתמש net :: smtp :: pipelining; שלי smtp = net :: smtp :: pipelining-> חדש ("localhost"); שלי $ Sender = Q (Sender@example.com); שלי (@ מצליח, @ נכשל); עבור הכתובת שלי $ (Q (s1@example.com), Q (s2@example.com), Q (s3@example.com)) {$ smtp-> צינור ({דואר => $ השולח, to => $ כתובת, נתונים => QQ (מתוך: $ השולח זוהי דואר לכתובת $),}) או לדחוף @Failed, @ {$ smtp-> pipe_rcpts_failed ()}; לחץ על @successful, @ {$ smtp-> pipe_rcpts_succeeded ()}; } $ smtp-> pipe_flush () או לדחוף @Failed, @ {$ smtp-> pipe_rcpts_failed ()}; לחץ על @successful, @ {$ smtp-> pipe_rcpts_succeeded ()}; הדפסה "נשלחה בהצלחה לכתובות הבאות: @Successful "להזהיר" נכשל לשלוח @Failed "אם SCALAR (@Failed)> 0; # טיפול שגיאה מורכב יותר אם (! $ smtp-> צינור ({דואר => $ שולח, to => $ הכתובת, נתונים => QQ (מ: $ Sender זוהי דואר לכתובת $),})) {שלי $ שגיאות = $ smtp-> pipe_errors (); עבור $ E $ (@ $ שגיאות) {הדפס "אירעה שגיאה:, אמרנו $ E -> {Command}"; הדפסה "והשרת הגיב $ E -> {code} $ e -> {הודעה} "}} דרישות: · פרל


Net :: smtp :: pipelining תוכנה קשורה