Menü
Ingyenes
becsekkolás
a fő  /  Multimédia / Tuning Yandex Mail Collection. Gyűjtse össze az összes betűt különböző dobozokból

Yandex mail gyűjtemény beállítása. Gyűjtse össze az összes betűt különböző dobozokból

Valószínűleg csak az egységek nem találkoztak a problémával elektronikus cím Megállt őket, vagy csak nem szükséges. De ha nagyszámú névjegy van csatlakoztatva a dobozhoz, akkor elveszíti, amit nem akarok.

Az első megoldás, amely eszébe jut, hogy új szép címet hozzon létre, és ugyanakkor folyamatosan ellenőrizze a másodikat. Ez komplikált. Ebben az esetben még több dobozt hozunk létre, és összezavarodunk egy nagy számú címmel.

Számos kellemetlenség van: van egy kockázat elfelejteni a jelszót, továbbra is bosszantja a címet [E-mail védett]Amikor Ön egy komoly cég igazgatója, és sokkal több van!

A megoldás az, és nagyon egyszerű. És kényelmes.

Ha létrehozott egy ideális című mezőt, csatlakoztassa a betűk gyűjteményét a régi levélből. A csatlakoztatott dobozokból származó összes betű megtalálható a fő levélben az azonos név mappáiban. Minden szépen, érthető és rendezett.

A kollektor időt takarít meg, hogy átkapcsoljon a dobozba a dobozba, és lehetővé teszi, hogy teljes mértékben egy új címre menjen, anélkül, hogy valaki megmaradna, hogy valaki megmaradjon.

Hogyan kell beállítani?

Ismét. Minden nagyon egyszerű. Elmondjuk:

  1. Menjen a postafiók beállításaira;
  2. Válassza ki a "Mail of Más dobozokból" című részét;
  3. Adja meg az e-mail címet és jelszót a dobozból, ahonnan betűket szeretne gyűjteni.

Új cím csatlakoztatása után látni fogod teljes lista Ugyanazon az oldalon.

Ebben a részben könnyedén kezelheti a kollektorot: Szüneteltetés, törlés vagy további dobozok hozzáadása. Az összegyűjtött leveleket külön mappában tárolják, az Ön által létrehozott belső almappákkal a régi dobozban.

By the way, ha szilárdan úgy döntött, hogy új szép címet használ, de túl lusta, hogy értesítse mindenkit, aki még mindig írja a régi leveleket, konfigurálja a szűrési szabályokat egy új cím automatikus válaszával.

Ehhez konfigurálja a szűrőt és az oszlopban "Ha a betűk valakinek" adja meg a régi címét. Válassza ki az "eredményüzenet" műveletet. Ha az üzenetben megadja az új doboz címét, akkor mindaz, aki írja a régi leveleket, megkapja a választ, és nem veszíti el a kapcsolatait.

Váltás az egyik fülről a Gmail-ről a másikra a "Yandex. Jó", meglehetősen unalmas. És ha van tucat fiókok A különböző postai szolgáltatókban az új levelezés reggeli ellenőrzése és egyáltalán kínzásgá válik. A betűk egy helyen történő kombinálásával megszabadulsz ebből a kellemetlenségtől.

Webes felület

A legtöbb e-mail szolgáltató beépített e-mail gyűjteményt tartalmaz több postafiókból. Például próbáljuk össze a betűket az összes dobozból egy gmail-fiókban.

Először is, győződjön meg róla, hogy a postai szolgáltatásban, ahonnan szeretné felvenni a betűket, a POP protokollon keresztül érhető el. Ezután menjen a Gmail beállításaihoz, és kattintson a jobb felső sarokban lévő "Beállítások" gombra. Kattintson a Fiókok fülre, és keresse meg a "Más fiókok küldése más fiókokból" című részét.

Fiók hozzáadása, írja be az e-mail címet, majd kattintson a "Tovább" gombra, majd élvezze a jelszót. Annak érdekében, hogy az e-mail cseréje a szolgáltatók biztonságosabbá váljanak, győződjön meg róla, hogy az "Mindig használjon védett kapcsolatot (SSL) az e-mail kézhezvételét követően. Ezután kattintson a "Fiók hozzáadása" gombra.

Most a hozzáadott címre érkező levelek automatikusan összegyűjtik a gmail beérkező leveleiben. Hozzáadhat annyi levelezési címet, amennyire szüksége van.

Asztali ügyfelek

E-mail igényű szoftver. Igen, sokat tehetsz a levélklien (néha sokkal több, mint a Google, amely most lehetővé teszi a gmailben). De a webes felületet nem hasonlítja össze a natív alkalmazással. Még a legmodernebb webes ui is egy szűk keresztmetszet a levélben.

Rife nidlman, cne.com

Asztali postai ügyfelek Jó abban, hogy különböző számlákból készíthetik a leveleket. Ugyanakkor több tucat címmel dolgozhat, és még azt sem gondolja, hogy milyen szolgáltató van egy szolgáltató.

A legtöbb kézzel készített e-mail ügyfélnek beépített teljes beérkezett üzenete van. Még akkor is, ha a kedvenc ügyfél csak a bejövő betűk külön mappájával működik, még mindig könnyen összeszerelheti őket az intelligens szűrőkkel együtt.

Annak ellenére, hogy az Outlook több postafiók egyidejű kezelésére készült, még mindig külön beérkezett üzeneteket jelenít meg minden fiókhoz. De könnyen javítható a szűrők segítségével.

Outlook Outlook, menjen a "Mappa" fülre, és kattintson az "Keresés mappa létrehozása" gombra az eszköztáron. Ezután válassza a "Egyéni keresési mappa létrehozása" lehetőséget. Kattintson a "Kiválasztás" gombra, de ne válassza ki a keresési kritériumokat, hogy minden új üzenet a mappába menjen. Nevezze meg a mappát, ahogy tetszik, például az "Minden levél".

Kattintson az „Áttekintés”, válassza ki az összes mappát és dobozok, ahonnan szeretne gyűjteni mail, és ellenőrizze a „Keresés Inned Folders” opciót.

Most az Outlookhoz hozzáadott összes e-mail fiókból származó betűk jelennek meg a létrehozott intelligens mappában. Engedélyezheti a "Kijelző kedvencek" opciót, hogy az új e-mailje mindig látható legyen.

A Mac e-mail kliens egyetlen mappát biztosít az összes csatlakoztatott fiókból származó bejövő levelek számára. Csak add hozzá a fiókokat, és az új betűket egy helyen gyűjtik össze.

A Thunderbirdben, hogy összegyűjtse az összes betűt egy mappában, nagyon egyszerű. Menjen a Nézet menübe (ha a menüsor nem jelenik meg, nyomja meg az ALT) gombot. Ezután válassza a "Mappák" → "Kombinált" lehetőséget. Most már egy "Bejövő" mappája új betűkkel, egy "Cherniviki" mappához, egy "elküldve" és egy "archívum". Nem kell sokáig kell keresnie, hogy hazudik. Ebben az esetben az üzenetek, mint korábban, a postai szolgáltatók szerverén tárolják.

Mobil ügyfelek

A kombinált beérkezett üzenetek sok mobilipari ügyfelek, köztük a Gmail. A Gmail alkalmazás összegyűjti a bejövő e-mail fiókokat, beleértve a Yahoo, az Outlook vagy más szolgáltatásokat.

Ha nem tetszik az alkalmazás a Google-ból, akkor kipróbálhatja a harmadik féltől származó levelezési ügyfeleket, mint például az Outlook vagy a MyMail.

Talán megvan az ötlete, hogyan kell csoportosítani az e-mailt egy helyen? Ossza meg a megjegyzéseket.

Ez a cikk megvitatja, hogy mi a "mail más dobozokból" és "betűk gyűjtése más fiókokból". A postai szolgáltatások és az összehasonlítások megtekintése.

Mivel a postai szolgáltatás funkcionalitása frissül, a cikk végén hírt adunk közzé.

Mail Service Post szolgáltatás, kereső motorok A Yandex és a Google több éve nagyon hasznos és szükséges funkcionalitást kínál, amely lehetővé teszi, hogy az összes többi e-mail fiókot egy levélben ötvözze. Más szóval, az egyszeri hozzáadása és az összes "levelező" konfigurálása, és az állandó bejelentkezés és jelszó nélkül képes kezelni őket egy ablakban.

A levelezési szolgáltatások óriási helyet kínálnak az összes bejövő betű tárolására, egy kényelmes felület, a jó menedzsment funkcionalitás és még sok más. A felsorolt \u200b\u200bpostai szolgáltatások képességeinek teszteléséhez válasszon három paramétert a munkájuk értékeléséhez: 1) A különböző e-mail fiókokat kell kezelnie, beleértve a különböző szolgáltatások és webhelyek, egy postai ügyfélen keresztül; 2) rendelkezik személyes aláírással és névvel minden levélre; 3) Lettetek törlése az e-mail fiókok kiszolgálókból, amelyeket postai, yandex vagy Google Mailhez adtak hozzá.

Feladatunk így néz ki:

Tehát folytassa. Először teszteljük a szolgáltatást a Mail.Ru-ról, amely azt mondja nekünk: "Az összes postafiókból az összes postafiókból gyűjthetjük a leveleződobozokat.

Állítsa be a betűk gyűjteményét bármely kiszolgálóról iMAP protokoll vagy pop3. " Külső levél hozzáadása a @mail, @inbox, @list, @bk, legalább egy e-mailt kell tartalmaznia, amely már elérhető a felsorolt \u200b\u200bkiszolgálókon a Mail-ból. Más szóval, először regisztrálja a leveleket, majd adjon hozzá más levelezési fiókokat. A levelekre vonatkozó regisztrációs folyamat egyszerű, nincs értelme leírni azt, de más e-maileket adunk hozzá ehhez a postafiókhoz.

Ezután felkéri, hogy felkéri a felhasználónevet és jelszót az Ön által használt bármely dobozból, és 3-5 perc múlva a "Mail Collector-tól a Mail-ről" létrehoz egy mappát a "Bejövő" mappák melletti hozzáadott levelek nevével, "Elküldött", "spam" és más.

Valójában a levélgyűjtő 10-15 percen belül meg fog keresni, és az újonnan létrehozott mappában az Ön által megadott mezőből hozzáad minden betűt. Az új e-mail összes bejövő betűje ehhez a mappába kerül, akkor is lehet küldeni a betűket a mellékelt dobozból. Új betű létrehozásakor megjelenik a "From" mező, amelyben kiválaszthatja, hogy melyik postafiókot küldje el a levélbe.

A Mail Service Mail.RU előnyei magukban foglalhatják a más dobozok hozzáadásának és könnyűségének egyszerűségét, nem kell különböző protokollokat (POP3, SMTP) megadni. Nagyon fontos, mert nem minden felhasználó tudja, mi az.

A Mail.RU mínusza az egyes új e-mailek nevének és aláírásának hozzárendelése (minden új e-mail, a fő) mellett, azaz a fő levél nevét és aláírását minden címen elosztják. Egy másik nagy hátránya, hogy a levélben levő betűk letöltésekor nincs lehetőség az eredeti betűk automatikus eltávolítására a mellékelt dobozból. Miért olyan fontos, hogy törölje a betűket a hozzáadott box szerverről? Ezzel elkerüli a csatolt levél kitöltését, mert Külső e-mail fiókok, mint általában kis méretű betűk tárolására. Például, ha tele a mail tér külső fiók Mail.Ru nem jelenít meg olyan új leveleket, amíg nem lép egy külső mail felületen és közvetlenül onnan nem törli a leveleket, hogy kiadja a helyet. Ezenkívül a postai küldeményeket hozza meg abban a reményben, hogy sok helyet kapunk e-mailünk tárolására, amely korlátozódik az erőforrások tárolására. Így annak ellenére, hogy a Mail.Ru szinte korlátlan postafióki hangerőt kínál, ha egy másik tartományzónát (például, [E-mail védett]) A hozzáadott e-mail erőforrások nem növeli a Mail.Ru, és továbbra is csak a hosting források (a mi esetünkben, forrásokat Primer.ru).

A levélszolgáltatáshoz egy másik levél hozzáadásának lehetősége nem tetszett két három ponton, és a teljes pontszámot.

Igaz, a Mail.RU másik módja van egy külső levél hozzáadásához, pontosabban a külső levélhez való csatlakozáshoz vagy bemenethez. Ez így néz ki:

Ez a módszer nem alkalmas feladatunkra, mert Ez nem egy levélgyűjtő, hanem olyan felhasználói mód, amely az e-mailhez csatlakozik, és minden egyes alkalommal betölti az összes mappát és betűt a levelező felületen. De a személyes aláírás és név hozzáadása minden e-mailben itt lehet küldeni leveleket a konfigurált levélből. A betűk eltávolítása a betöltött dobozokból nem működik, mert Ez nem egy levélgyűjtő.

Fontos! Egyes felhasználók tévesen azt gondolják, hogy ha a levelek megjelentek a levélben, akkor a letöltés bekövetkezett levele megtisztítható. Megint figyelmet fordítunk arra, hogy a Mail.RU posta nézőként dolgozik, és ha tisztítja a levelet, akkor eltávolításra kerül a fő dobozban, és a levélben.

Második teszt Yandex a levélgyűjtővel. A feladatok hasonlóak: gyűjtsük össze a leveleket, adjunk hozzá aláírását és nevét minden levélhez és névhez, valamint törölje az összes levelet a hozzáadott dobozból.

A Yandexben lévő betűk gyűjtőjét hasonló séma állítja be, de ha az e-mail kapcsolat valamilyen webhelyről történik, például a site.ru, akkor további beállításokat kell regisztrálnia, lásd a képernyőképet.

A Mail Service ezt a munkát illeti, Yandex kínál kézi üzemmód Állítsa le az összes beállítást a harmadik féltől származó levélből. Itt semmi bonyolult: A bejelentkezési mezőben megadjuk a levél teljes nevét ( [E-mail védett]), A kiszolgáló mezőbe írja be csak a domain (site.ru), az összes többi beállítás jobb, ha elhagyja az alapértelmezett, vagy módosítani, ha tudja, mit csinál. A levél sikeres hozzáadása után megjelenik a felirat:

Ellentétben a levél, a kollektor, a Yandex azt javasolja, hogy kiválassza, hogy mentse-e az eredeti betűket a hozzáadott fiókban, vagy sem. Összességében a Yandex leveles betűje hasonló sémában működik a Mail.RU-val, lehet kiválasztani egy postafiókot, amelyből levelet küldhet. De a levelek aláírásával a Yandex-től ugyanazt a problémát: nincs mód arra, hogy az egyes hozzáadott postafiókokra minden egyes hozzáadott postafiókra beállíthassa az egyes hozzáadott postafiókokat.

A navigáció megítélése, az egyes postafiókok egyéni aláírásának hozzáadásának lehetősége, de valójában ez nem működik. Válassza a Mail lehetőséget, előírjuk a nevet és az aláírást, kattintson a Mentés gombra. Mindent, az aláírás mentésre és futásra kerül, de az összes többi postafiókra ment, azaz a név és az aláírás egy dobozhoz való hozzárendelése, automatikusan megváltoztatja ezeket a paramétereket az összes egyesített levélben a Yandexben. Még ha bármely más doboz kiválasztása is, az aláírás most mindenhol hasonló lesz.

A teljes Yandex sikeresen küzdött a díjat és a válogató levelezést, tudja, hogyan kell eltávolítani a betűk eredetiket a hozzáadott dobozból, de nem tudja, hogyan kell dolgozni az aláírásokkal! Feladatunkban a Yandex levelei levele nem megbirkózott, és két pontot tárcsázott háromból.

Szeretném megjegyezni, hogy "futás" mind a három készletben a betűk összeszerelésén, úgy tűnik, hogy a levél "aludt" a funkcionalitását a mentőadó kezében. Bár kielégíti a legtöbb felhasználót, de őszintén szólva, a levél egy kullancs-kollektorot tett, hogy megünnepeljen egy versenyképes versenyen. Jól működik és kudarcok nélkül működik, de feladatainkkal a kollektor a levélből nem megbirkózott. A mail felületen számos reklámblokk található, de nem zavarja a betűkkel való munkát.

Ami a Yandex-et illeti, aki hosszú ideje levélgyűjtőt hoz létre, úgy tűnik, hogy az adott iparág támogatása nem foglalkozik, mert nem lehet ilyen egyszerű funkcionalitást kijavítani (a fiókok többszörös aláírásainak hozzáadása) nem nehéz ilyen erőteljes keresőmotor számára. Mindazonáltal a Yandexnek van egy másik egyedi funkciója, amely lehetővé teszi, hogy a domainek a DNS-kiszolgálójukon kötődjenek, és már a levél létrehozása és konfigurálása. De az ilyen műveletekhez és a beállításokhoz ismereteket és időt igényel. És bár ott semmi sem bonyolult, mindenesetre nem a legtöbb futófelhasználó számára. Nagy előny - Nincs hirdetés a Yandex mail felületen! Mínusz - A betűk kollektorának korlátozása 10 postafiókon.

Finalista és győztes - A Google-ból származó betűk gyűjtője, aki még a mi feladatunkkal küzdött 5 dobozban korlátozás

Valószínűleg sokan közülük a gyakorlatban találkoztak a postai küldemények gyűjtésére számos dobozból. Miért van szükség? Valószínűleg azért, mert ez egy univerzális mechanizmus a rendszerek közötti adatok cseréjére. Számos könyvtár az SMTP, POP3, az IMAP, az IMAP, a kész megoldások végrehajtásához az üzenetek kötegének megvalósításához (mivel nehéz a postafiókot hívni ...), stb.

Nem meglepő, hogy sok integrációs feladatot hajtanak végre a levélen keresztül. Van egy bizonyos szolgáltatás, amely tudja, hogy ez a levél gyorsan felveszi, kategorizálja és végrehajtja a szükséges intézkedéseket.

Kinek az alábbi kódot elegendő az alábbiakban - nem tud tovább olvasni:

Foreach (var postalbox a postafiókokban) segítségével (VAR Client \u003d New Pop3Client ()) (ügyfél.Connect (HostName, Port, False); ügyfél.Authenticate (felhasználó, jelszó); var count \u003d client.getmessageCecomunt (); i \u003d 0; én< count; i++) { Mail = client.GetMessage(i + 1); var cat = SortMail(Mail); DoSomething(Mail, cat); } }

Mit csináljunk

Azonnal készítsen több feltételezésre:
1) Több rendszerhez kell gyűjtenie. Talán a jövőben, több többre. És mégis ... általában a megoldásnak univerzálisnak kell lennie;
2) A levél sokkal - az 1. pontból következik (és különben nem írnám ezt a bejegyzést);
3) A levélnek pars-nek kell lennie
4) A szolgáltatás összes doboza - a felhasználók nem másznak ott.

Mit fogunk használni

A rendszernek 24 óráig kell működnie, így a Windows szolgáltatás formájában hajtjuk végre. E célból azt javaslom, hogy azonnal használjam a Topshelf-t.

Természetesen minden párhuzamosnak kell lennie. Itt a kedvenc TPL DataFlow könyvtárom a jelenethez jön.

A POP3-t fogjuk levenni a levelet. Az összes "divatos dolog" ebben a feladatban nem szükséges - a lehető leggyorsabban szükséges, és könnyebben felvenni a forráslevelet, és törölje azt a szerverre. A POP3 elég a szemekhez. Használja az OpenPop.net használatát.

Opcionális, rögzítse a ZUBBIX-et. (24 órás munkát végeztünk, és dicséretes sebességet bocsátunk ki - követnie kell ezt).

Megy

Hozzon létre egy rendszeres konzol alkalmazást. Nyisson meg egy nuget konzolt, és tegye meg az összes szükséges csomagot:

Telepítés-csomag NLOG install-csomag OpenPOP.NET install-csomag topshelf telepítés-csomag Microsoft.tpl.dataFlow
Menjen a projekt mappába, hozzon létre egy app.debug.config és az app.release.config. Töltsön fel egy projektet a stúdióból, nyissa meg a kódját (itt, majd TopCrawler.csproj). Adja hozzá a konfigurálást.

Konfiguráció

App.config App.config


És az MSBuild alacsonyabb célpontja:

TARTÁLT TARGET.

$ (TargetFilename) config


Személy szerint, pontosan ilyen módon használtam - régi módon - adjunk hozzá a konfigurációk átalakítását a média elkülönítéséhez.
A kényelem érdekében erősen típusú konfigurációkat javasolok. Egy külön osztály elolvassa a konfigurációt. (Az ilyen megoldás elméleti vonatkozásai közölhetők a megjegyzésekben). Konfigurációk, naplók, monitoring - nagyszerű ok a Singleton minta megvalósításához.

Hozzon létre egy mappát a projektben ugyanazt a nevet (kötelezőnek kell lennie). Belső létrehozása 3 osztály - Config, Logger, Zabbix. A loggerünk:

Fogger.

static Class Logger (Get, Private Set;) Nyilvános statikus NLOG.LOGER archívum (Get, Private Set;) Statikus logger () (log \u003d logmanager.getlogger ("Global"); Archívum \u003d LogManager. Getlogger ("Archivator"); )))))))))


A ZUBBIX-vel való megfigyelés külön bejegyzést érdemel, így egyszerűen itt hagyok egy osztályt, amely az ügynököt használja:

Zubx

névtér TopCrawler.singleton (///

/// Singleton: Zabbix Sender Class ////////// Statikus statikus Zabbixsender küldő (Get, private set;) statikus Zabbix () () (Sender \u003d New Zabbixsender () (config.zabbixserver, config.zabbixport);)) Struct ZabbixItem (nyilvános string host; nyilvános karakterlánc;) CLASS ZUBBIBIXSENDER (belső struktúra SendInem (// Resharper tiltása inkonstisztnaming - A ZUBBIX a kis- és nagybetű nélküli nyilvános string host; nyilvános string kulcs; nyilvános string érték; nyilvános string óra; // Resharper Restore inkonsistentnaming) #pragma figyelmeztetés letiltása 0649 Belső struktúra ZabbixResponse ( Nyilvános string válasz; Nyilvános karakterlánc info;) #Pragma figyelmeztetés visszaállítása 0649 #Region --- konstansok --- Public Const String DefaulTheader \u003d "ZBXD \\ X01"; Public Const String Sendrequest \u003d "Küldő adatok"; Nyilvános CONST INT DEFAUTTIMEOUT \u003d 10000 ; #ENDREGION #Region --- mezők --- Privát Readonly DateTime _dtunixmintime \u003d DateTime.Specifyind (új DateTime (1970, 1, 1), DateTimekind.utc); Privát Readonly Int _Timeout; Privát Readonly String _zabbixserver; Privát Readonly Int _zabbixport; #ENDREGION #Region --- konstruktorok --- Public Zabbixsender (Zing Zabbixserver, Int Zabbixport): Ez (Zabbixserver, Zabbixport, AlapértelmezettXIMEOUT) () Public Zabbixsender (STRING ZUBBIXSERVER, INT TIMEOUT) (_zabbixserver \u003d zabbixserver; _zabbixserver \u003d Zabbixport; _TimeOut \u003d Timeout;) #ENDREGION #RREGION --- MÓDSZEREK --- PUGLAL STRING Senddata (Return Senda (új lista) (1) (ITM)); ) Senddata nyilvános karakterlánc (lista) Lstdata) (PRY (VAR Serializer \u003d New JavascriptSerializer (); var értékek \u003d új lista (lstdata.count); Értékek.addrange (host \u003d itm.host, billentyű \u003d itm.key, érték \u003d itm.value, óra \u003d math.floor ((DateTime.now.tounsaltime () - _dtunixmintime). Totalseconds). )); var JSON \u003d Serializer.Serialize (új (kérés \u003d sendrequest, adatok \u003d értékek.ToArray ())); var header \u003d encoding.ascii.getbytes (DefaulTheader); var hosszúság \u003d bitconverter.getbytes ((hosszú) json.lengnth); var adat \u003d kódolás.ASCII.GETBYTES (JSON); Var packet \u003d új byte; Puffer.blockcopy (fejléc, 0, csomag, 0, fejléc); Puffer.blockcopy (hossz, 0, csomag, fejléc, hossza. Hossza); Puffer.blockcopy (adatok, 0, csomag, header.length + length.lengnth, data.lengnth); Használata (var socket \u003d new socket, sockettype.stream, protocoltype.tcp)) (_zabbixserver, _zabbixport); socket.send (csomag); // fejléc var puffer \u003d új byte; ReceVdata (aljzat, puffer, 0, puffer.lengnth , _TimeOut); ha (DefaulTheader! \u003d encoding.ascii.getstring (puffer, 0, puffer.lengnth)) Új kivétel ("Érvénytelen fejléc"); // Üzenethosszú puffer \u003d új byte; ReceVdata (aljzat, puffer, 0 , Puffer.length, _timeout); var datalength \u003d bitconver.toint32 (puffer, 0); ha (Datalength \u003d\u003d 0) dobja az új kivételt ("Érvénytelen adathossz"); // Üzenetpuffer \u003d Új byte; ReceVdata (Socket, Puffer, 0, puffer.Length, _timeout); var válasz \u003d Serializer.DeSerialize (Encoding.ascii.getstring (puffer, 0, puffer.lengnth)); Visszatérési string.Format ("Válasz: (0), info: (1)", válasz.Response, válasz.info); )) Catch (kivétel E) (Visszatérés STRING.FORMAT ("Kivétel: (0)", E);)) Privát statikus ürességi vétel (Socket POBJSOCKSOCK, BYTE puffer, int offset, int méret, int időtúllépés) (var starttickcount \u003d Környezetvédelem.tickCount; var kaptam \u003d 0; do (ha (IF (IF (IF (IF) (IFOUCCON.TICKCOUNT\u003e STARTTICKCOUNT + TIMEOUT) dobja az új TimeOutException (); Próbálja meg (beérkezett + \u003d pobjsocket.receive (puffer, offset + fogadott, méretű, socketflags.none) ;) a fogási (SocketException EX) (ha (ex.socketercode \u003d\u003d socketerror.wouldblock || Ex.SocketerRorcode \u003d\u003d socketerror.iopending || Ex.SocketerRorcode \u003d\u003d socketerror.nobufferspaceAvailable) Thread.Sleep (30); Else Throw;) ) Míg (beérkezett< size); } #endregion } }


Konfigurák ... Itt az ideje, hogy legalább valami érdekeset tegyen. Először is, a konfigurációkban tároljuk az interjú által készített dobozokat. A második dataFlow beállításokban. Ajánlom:

Configs



Tehát a fogadó és a port, ahol van összekapcsolva, a felhasználó és a jelszó - Minden itt világos. További típusú doboz. Tegyük fel, hogy a szolgáltatást a marketing (valamint más osztályok) használják. Van fiókjaik, ahol az autows lesz a levelezésre, valamint az FBL spam jelentésekre. Maga a doboz már kategorizált betűt, így az ilyen helyzetek azonnal adják meg a doboz típusát. A DataFlow beállításokkal tovább világos lesz, amikor elkezdem az objektumok létrehozását. Itt lesz a saját szakaszaink a konfigurációban. Kézikönyvek heap Hogyan kell csinálni, így csak az eredményt mutatom:

Meghatározzuk a típusokat

#Region --- típusok --- statikus osztályú postafiók (Public Const String Bo \u003d "Bo"; Public Const String CRM \u003d "CRM"; Nyilvános Const String FBL \u003d "FBL"; Public Const String Bounce \u003d "Bounce";) Osztálypostafiufo (nyilvános karakterlánc típus (Get,) nyilvános string hostname (Get, Set;) Nyilvános string felhasználó (Get, Set;) Nyilvános karakterlánc jelszó (Get; Set;) Public In Port (Get, Set; Set;)) CLASS DATABLOBOPTIONS ( Get; Set;) Public In BounddedDedKapacity (Get, Set;) Public DatabablockOpciók () (MAXDOP \u003d 1, HatchedCapacity \u003d 1;)) #ENDREGION


Szekciók létrehozása

///

/// Custom Config szakasz ///////// Nyilvános osztályú vámhatóságokConfigsection: Konfigurációk (nyilvános hitelesítő elemek hitelesítő szerveim) hitelesítő lekérdezésként;)) Public DatabablockOptionsCollection DataFlowOptionsItems (Get (Return Base ["DataFlowOptionslist"] DataablockOptionsCollection;


///

/// Custom Collection - hitelesítő adatok listája /////// Nyilvános osztály hitelesítő elemek: KonfigurációElementcollection, OneMerable (Védett felülbírálat-konfigurációs createnewelemement () (új hitelnevelés ();) védett felülbírálási objektum GetelemementKey (konfigurációs elem) (RETURMENTEELSEMENT ELEM) (RETURN (CREDICEELSELEMENT) elem) .username;) Public CrediteSelle Ez (Get (Ret CredenceSgenteSelle) ) Nyilvános új énumerátor < Count; i++) { yield return BaseGet(i) as CredentialsElement; } } } /// /// Egyéni hitelesítő adatok ////////// Nyilvános osztály hitelesítő hozzáférés: Konfigurációelem (visszatérési alap ["hostname] mint karakterlánc;)) nyilvános string felhasználónév (visszatérési bázis [" Felhasználónév] mint karakterlánc;)) nyilvános karakterlánc jelszó (Geturn Base ["jelszó"] mint karakterlánc;)) String típusa (Get (Return Base ["Type"] mint karakterlánc;))) Nyilvános karakterlánc (visszatérési alap ["port"] mint karakterlánc;)))) /// /// Custom Collection - Databullock Options List ///////// Nyilvános osztály DatabablockOptionsCollection: KonfigurációElementcollection, OneMerable (Védett felülbírálás konfigurációs createnewelemement () (új databullockoptionselement (););) védett felülbírálási objektum Getelemementkey (konfigurációs elem) (Return (((datablockOptionselement) elem) .Name;) Nyilvános hitelnyújtási hozzáférés (Get (RETUREST BASEGET (index) hitelesítő megjelenésként;) ) Nyilvános új énumerátor Getenumerator () (a (var i \u003d 0, i)< Count; i++) { yield return BaseGet(i) as DataBlockOptionsElement; } } } /// /// Custom Datablock Options elem /////////// Nyilvános osztály DatabablockOptionselement: Konfiguráció (nyilvános karakterlánc neve] mint karakterlánc;))) Nyilvános string MAXDOP (Visszatérési alap [MAXDOP] mint karakterlánc;)) Nyilvános string boundedcapacity (Getwn Base ["BoundedCapacapacity"] mint karakterlánc;))


Nem fogom megírni a konfiguráció teljes végrehajtását, azt állítja, hogy a paraméterek fejlesztésének folyamatában ott hozzá kell adnunk.

Az egyéni beállítások így olvashatók:

Kész

nyilvános lista. Hitelesítőt lista (Get, privát készlet,) nyilvános szótár DataFlowOptionsList (Get, Private Set;) ... statikus konfiguráció () (Try Customconfig \u003d (VAV CustomcenConfig \u003d (Customletingsconfigsection) ConfiguralManager.getsectionsection ("CURESSCENTINGS"); // Get Playboxok Foreach (VAR elem a CustomConfig.CredentialEmsList.add ( New MailboxInfo (hostname \u003d item.hostname, port \u003d convert.toint32 (item.port), felhasználói \u003d item.username, type \u003d item.type, jelszó \u003d item.password); // a DataFlow beállítások megtekintése (VAR elem customconfig.dataflowoptionsitems) DataFlowOptionsList.add (item.name, új databullockoptions (maxDOP \u003d convert.toint32 (elem.maxdop), boundedcapacity \u003d convert.toint32 (item.boundedcapace)));) Catch (kivétel ex) (Logger.log)); Végzetes ("hiba az olvasásban: (0)", ex.message); dobás;))


Valahogy nagyon meghosszabbodott, és még csak nem is elérjük a legérdekesebbet.

Engedje le a topshelf, a teljesítményszámlálók, az adatbázis kommunikációját, és forduljon a pontig! Hozzon létre egy bejáróosztályt - magot. Kezdje, olvassa el a leveleket:

Privát volatile bool _stoppipeline; ... Nyilvános Void Start () () (var getmailsks \u003d _config.credentialslist.Select ((hitelesítő adatok \u003d\u003e feladat.run (() \u003d\u003e getmails (hitelesítő adatok))). Tolist (); foreach (VAR feladat a getmailstasks) TASK .WAIT (), szál.Sleep (2000);) míg (! _Stoppipeline); // Stop csővezeték - Várja meg az összes végpont befejezését // A DataFlow leállítását a Ha szállítószalag (_stoppipeline) logger.log. Figyelmeztetés ("A csővezetéket a felhasználó leállította);)
Itt Lena vette a saját, és úgy döntöttem, hogy nem zavarja -, ha a dobozok 20-30 lehet használni az egyes feladatokhoz, és nem gőz a folyamok száma. (Megengedem, hogy dobja a paradicsomot.)

Menj az olvasáshoz:

Privát Void Getmails (PostboxInfo Info) (próbálja meg (VAR kliens \u003d új pop3client ()) (
Azonnal fontolja meg a dobozhoz való hozzáférés időzítését - hasznos a hálózati diagnosztika és a kiszolgáló munkaterhelése.

// Get Zabbix Metrics Var Stopwatch \u003d Új stopperóra (); stopwatch.start (); // küldje el a levelezési klienst.Connect (info.hostname, info.port, hamis); Client.authenticate (info.User, info.password); stopwatch.stop ();
Adatokat küldünk a Zabbix-nek. Minden egyszerű - Adja meg a gazdagép nevét (mivel a Zabbix-ben van), a kulcs (ismét szigorúan, mint a Zabbixben) és egy karakterlánc értéket.

// Küldje el Zabbix Zabbix.sender.Senddata (új Zabbixitem (Host \u003d configix.Hostkey, billentyű \u003d info.type + config.timingkey, érték \u003d stopwatch.elapsedmilliseconds.Tostring ())); Logger.Log.Debug ("Küldés [(0)] időzítés a Zabbix-hoz: csatlakoztatva" (1) "AS" (2) ", időzítés (3) ms", info.type, info.HostName, info.User, stopwatch.elapsedmilliseconds); var count \u003d client.getmesgacount (); ha (count \u003d\u003d 0) visszatér; Logger.log.debug ("Mi" új (0) üzenetet kaptunk "(1)", szám, info.user); // Üzenetek küldése a blokk rendezéséhez (var i \u003d 0; i< count; i++) { try { var mailInfo = new MessageInfo { IsSpam = false, Mail = client.GetMessage(i + 1), Type = MessageType.UNKNOWN, Subtype = null, Recipient = null, Mailbox = info }; Logger.Log.Debug("Download message from "{0}". Size: {1}b", info.User, mailInfo.Mail.RawMessage.Length);
A dataFlow csővezeték létrehozásakor létrehozásra kerül egy bejáró osztály létrehozásakor. Hisszük, hogy az első szakaszunk a levél rendezése.

Míg (! _Sortmaildatablock.post (MailInfo)) szál.Sleep (500);
Nézze meg, milyen egyszerű a szállítószalag egyedül. Minden más, az e-mail olvasása, az üzeneteket egyenként dobja. Ha a blokk elfoglalt, a hozzászólás vissza fog térni, és egyszerűen várjuk, amíg ingyenes. Az aktuális későbbi időpontban továbbra is működik. Hogy a párhuzamosságot aggodalom nélkül hívom.

Az üzenet elment a szállítószalagra, most lehet megmenteni egy nyugodt lélek a nyers archívumban (igen! Minden, amit olvastunk - Mentse el a fájlarchívumba. A támogatási szolgáltatás később köszönhetően köszönöm).

Konfiguráljuk például az archívum forgását:

Nlog.config



Akkor emelni a logstash, de ez egy másik történet ...

// mentse az összes levelet az Archive Logger.Log.Debug ("Archív üzenet"); Logger.archive.info (funkciók.messageTostortring (mailInfo.mail)); ) Fogás (kivétel ex) (Logger.log.Error ("Parse e-mail hiba: (0)", ext.message); funkciók.errektákKártyák.Increment (); // archiválási levél Anyway logger.log.debug (archív üzenet "); Logger.archive.info (encoding.default.getstring (kliens.getmessageasbytes (i + 1));), ha (_config.deleteMail) ügyfél.DeleteMessage (I + 1); ha (_stoppipeline) szünet; ) Logger.log.debug ("Kész:" (0) ", info.User); )) Catch (kivétel ex) (Logger.log.Error (általános hiba - típusa: (0), üzenet: (1) ", ex, ex, ex, ex.message); funkciók.errektuscounters.Increment ();))
Itt statikus hibamérőket használtunk (a dobozok típusát), ahol a hibák:

Nyilvános statikus szótár Errorscounters \u003d új szótár ();
És a méterek maguk is így lehetnek:

Pult.

osztályszámláló (privát hosszú _Counter; nyilvános számláló () () (_Counter \u003d 0;) Nyilvános Void növekmény () (reteszelt.Increment (Ref _Counter);) nyilvános hosszú olvasás () (visszatérés _Counter;) nyilvános hosszú frissítés () .Exchange (REF _Counter, 0);) nyilvános üresség hozzáadása (Ref _Counter, érték);) nyilvános üresség set.Exchange (REF _Counter, érték);)


Forduljunk a szállítószalag létrehozásához. Tegyük fel, hogy vannak fiókjaink, ahol az Auto Autows Rawd. Az ilyen betűket kell festeni (mi az automatikus válaszhoz, akitől, amely szerint a levelezési lista stb.) És hajtsa végre az eredményt a tárolóba (adatbázis). Tegyük fel, hogy vannak olyan dobozok, ahol FBL jelentések esnek. Az ilyen betűk azonnal hozzáadják az adatbázishoz. Minden más betű "hasznosnak" tekinthető - azokat a spamen kell ellenőrizni, és küldje el a külső rendszernek, például CRM-nek.

Ahogy már megértette, ez a példa elsősorban a kollektor alkalmazásának a marketing feladatokra való alkalmazását figyelembe véve - a postafiókok gyűjteménye, a spam információkat.

Tehát döntöttünk a munkafolyamatról. Kijelentjük a szükséges blokkokat a bejáróosztályban:

Osztályos üzenetinfo (Get, Public Bool Isspam (Get, Set, Set;) Nyilvános sztring altípus (Get, Set;) Nyilvános string címzett (Get, Set;) Public Messagetype Type (Get, Set;) Public MailboxInfo postafiók (Get, Set;) ) CLASS CRAWLER (// Csővezeték-magán transzformáció _Sortmaildatablock; Privát transzformáció. _Spamfilterdatablock; Privát transzformáció. _CheckBouncedatablock; Privát transzformáció. _Identifydatablock; Privát akcióblokk. _Addtocrmdatablock; Privát akcióblokk. _Addtofbldatablock; Privát akcióblokk. _Addtobouncedatablock; ...
Hozzon létre egy inicializálási módszert, és hozzon létre egy szállítószalagblokkokat (a blokkok inicializálásához, a konfigurációkból csodálatos részeket használunk):

Nyilvános Void init () (// *** Csővezeték létrehozása *** // A Transformblock létrehozása a VaL BlockOptions \u003d _config.getdatablok alkalmazásaihoz ("_ sortmaildatablock"); _Sortmaildatablock \u003d Új átalakítás (mail \u003d\u003e sortmail (levelek), új exutulutiondataflowblockoptions (maxDegreeofparallelism \u003d blokkoptions.maxdop, boundedcapacity \u003d blokkoptions.BoundedKapacitás)); // A SPAM BlockOptions \u003d _config.getdatablokOptions ("_ spamfilterdatablock") szűréséhez _Spamfilterdatablock \u003d új transzformációblokk (Mail \u003d\u003e filterspam (mail), új exutulutiondataflowblockOptions (maxDegreeofparallism \u003d blokkoptions.maxdop, boundedcacity \u003d blokkoptions.BoundedKapacitás)); // Hozzon létre transzformblockot a sírások rendezéséhez \u003d _config.getdatablocoptions ("_ checkbouncedatablock"); _CheckBouncedatablock \u003d Új transzformációs block (Mail \u003d\u003e bouncetypecheck (mail), új exutulurectataflowblockoptions (maxDegreeofparallelism \u003d blokkoptions.maxdop, boundedcapacity \u003d blokkoptions.BoundedKapacitás)); // A Transformblock létrehozása a Bounce tulajdonos blokkolásainak azonosításához \u003d _config.getdatablockOptions ("_ azonosítódatablock"); _IdentifyDatablock \u003d Új átalakítás (Mail \u003d\u003e getrecipient (mail), új exhututureFataFlowblockOptions (maxDegreeofparallelism \u003d blokkoptions.maxdop, boundedcapacity \u003d blokkoptions.BoundedKapacitás)); // Actionblock létrehozása a CRM BlockOptions-nek küldéséhez \u003d _config.getdatabloceptions ("_ addtocrmdatablock); _Addtocmdatablock \u003d Új akcióblokk (Mail \u003d\u003e addtocrm (mail), új exutulurefataflowblockoptions (maxDegreeofparallism \u003d blokkoptions.maxdop, boundedcapacity \u003d blokkoptions.BoundedKapacitás)); // Hozzon létre műveletblokkot az FBL küldéséhez a MailWh BlockOptions \u003d _config.getdatablocoptions ("_ addtofbldatablock"); _Addtofbldatablock \u003d Új akcióblokk (Mail \u003d\u003e addtofbl (mail), új exhutenwutaFlowblockOptions (maxDegreeofparallelism \u003d blokkoptions.maxdop, boundedcapacity \u003d blokkoptions.BoundedKapacitás)); // Actionblock létrehozása a Bounce-tól a MailWh BlockOptions \u003d _config.getdatablocoptions ("_ addtobouncedatablock"); _Addtobouncedatablock \u003d Új akcióblokk (Mail \u003d\u003e AddtoBounce (Mail), új ExecutionDataFlowblockOptions (MAXDEGREEOFPARALLISM \u003d BLOBOPTIONS.MAXDOP, HOLDEDCAPACITÁS \u003d blokkoptions.BoundedKapacitás));
Gyűjtse össze a szállítószalagot a rendszerünknek megfelelően:

// *** Csővezeték építése *** _Sortmaildatablock.linkto (_spamfilterdatablock, info \u003d\u003e info.Type \u003d\u003d MessageType.General); _Sortmaildatablock.linkto (_addtofbldatablock, info \u003d\u003e info.type \u003d\u003d messagetype.fbl); _Sortmaildatablock.linkto (_checkbouncedatablock, info \u003d\u003e info.type \u003d\u003d MessageType.bounce); _Sortmaildatablock.linkto (dataflowblock.nullltarget. (), info \u003d\u003e info.type \u003d\u003d messagetype.unknown); / * Csonk * / _checkboundatablock.linkto (_ _IdentifyDatablock); _IdentifyDatablock.Link (_addtobouncedatablock); _Spamfilterdatablock.linkto (_Addtocmdatablock, info \u003d\u003e! Info.isspam); _Spamfilterdatablock.linkto (dataflowblock.nullltarget. (), info \u003d\u003e info.isspam); / * Stub * /
Amint látja, minden rendkívül egyszerű - a blokkot a következőkkel társítjuk (a csatlakozási feltétel beállításának lehetőségével). Minden blokk párhuzamosan kerül végrehajtásra. Minden egységnek van egyfajta párhuzamosság és egy tartály (a tartály segítségével, akkor a sorozatot a blokk előtt állítsa be, vagyis az egységüzenet elfogadott, de nem folytatódik). Így lehetséges a "komplex" és a hosszú műveletek nagyfokú párhuzamosságának beállítása, például a levél tartalmának elemzése.

Nem fogom leírni a Matchaw DataFlow-t, jobb, ha mindent elolvashatok a TPL DataFlow forrásban.

Sortmaildatablock.completion.continuewith (t \u003d\u003e (ifataflowblock) ((IdataFlowblock) .fault (t.Exception); egyébként _spamfilterdatablock.comple ();)); _Sortmaildatablock.cletion.continuewith (t \u003d\u003e (ifataflowblock) _addtofbldatablock) .fault (t.Exception); egyébként _addtofbldatablock.complete ();)); _Sortmaildatablock.completion.continuewith (t \u003d\u003e (ifataflowblock) .fault (t.Exception); egyébként _checkbouncedatablock.complete ();)); _Spamfilterdatablock.completion.continuewith (t \u003d\u003e (ha (t.isfauded) ((IdataFlowblock) .fault (t.Exception); más _addtocrmdatablock.complete ();)); _Checkbouncedatablock.core.contion.continuewith (t \u003d\u003e (ifataflowblock) ((IdataFlowblock) .fault (t.Exception); egyébként _IdentifyDatablock.complete ();); _IdentifyDatablock.completion.continuewith (t \u003d\u003e (ifataflowblock) _addtobouncedatablock) .fault (t.Exception); egyébként _addtobouncedatablock.complete ();)); )
Mindent, valójában a szállítószalag már működik, üzeneteket küldhet hozzá. Csak abbahagyja a start módunk hozzáadását:

Rajt.

nyilvános üresség indítás () (do (var getmailsks \u003d _config.credentialslist.Select (() \u003d\u003e getmails (() \u003d\u003e getmails (())). Tolist (); foreach (var feladat a getmailsks) feladat.Wait () ; Thread.sleep (2000);) míg (! _Stoppipeline); // Stop csővezeték - Várja meg az összes végpont befejezését _sortmaildatablock.complete (); _Addtocmdatablock.Completion.Wait (); _Addtofbldatablock.comTAnance.Wait (); _addtoouncedatablock. Befejezés.Wait (); ha (_stoppipeline) logger.log.warn ("A csővezetéket a felhasználó leállította);)


Menjen a küldöttekre.
Válogatás ... Nos, mondjuk, mindannyian csak (bonyoluljuk, akkor mindig van időnk ahhoz, hogy bonyolítsuk):

Privát MessageInfo Sortmail (mailboxtype.crm: mail.type \u003d messagetype.general, szünet; tok, postafiókexpe.bounce: mail.type \u003d messagetype.bounce, szünet, esetpostafiókextípus. Fbl: mail.type \u003d messagetype.fbl; szünet; Levél;)
Spamszűrő. Ez a házi feladat - használjon spamassassin.
Itt van egy küldött:

Privát MessageInfo FiltersPam (MessageInfo Mail) (// TODO: Add Spamassassin Logic Return Mail;)
És az API Spamassassin (Link a projekthez) való munkavégzéshez.
És a levelek elválasztásához megyünk. Parsim vagyunk Auto Autows. A MEF üzletbe kerül.
Hozzon létre egy projektet (DLL) interfészek a plugins (hívás interfészek).
Interfész hozzáadása:

Public Interface Icondition (String Check (Message Mimemessage);) Public Interface IconditionMetadata (típus típusa (get;))
És ... mindent. TopCrawlerünk a projekttől függ, és a bővítményekkel rendelkező projekt is használhatja.
Hozzon létre egy új projektet (szintén DLL), hívjon feltételeket.
Add hozzá az Anscan típusokat:

#Region --- típusok --- statikus osztályú bouncetype (nyilvános const string Teljes \u003d "bouncetypefull"; nyilvános konstródos timeout \u003d "bouncetypetimeout"; Public Const String elutasított \u003d "bouncetyperefused"; Nyilvános konstrukció, Notfound \u003d "bouncetypenotfound"; nyilvános const string inaktív \u003d "bouncetypeinactive"; Public Const String Outofoffice \u003d "BouncetypeOutofoffice"; Public Const String HostNotfound \u003d "bouncetypehostnotfound"; Nyilvános konstrukció Noteuthorized \u003d "bouncetypenotauthorized"; Nyilvános konstrukciós karakterláncok \u003d "
És az interfészünket végrehajtó osztályok:

Nyilvános osztály FoatementNotFound1: Ikon Mimemessage (ha (! Mimemessage.messagePart.ismultiapart) Visszatérés Null; Const String Pattern \u003d "Diagnosztikai kód :. + SMTP. + 550"; var regexp \u003d New Regex Mimemessage.messagepart.messageParts.any (rész \u003d\u003e rész.contenttype.mediatype \u003d\u003d "Üzenet / szállítás-állapot" && regexp.ismatch (Part.GetBrastext ()))? Bouncetype.Notfound: null;)) ... nyilvános Class FoundTimeOut2: Icondition (Visszatérés Bouncetype.Timeout;) ...
Ahogy értesíti az egész esetet attribútumokban. A bővítményekkel és betöltésre kerül.
Visszatérés a projektünkhöz és töltse be a bővítményeket:

CLASS CROWLER (... // Plugins Nyilvános genumerable \u003e Bouncetypeconditions (get, set;) Private Void Loidplugins () (PRY (VAR CONTAINER \u003d új compositecontainer (új könyvtárcatalog (_config.pugindirectory), true); konténerverskleparts (ez);) Catch (kivétel ex) (Logger.log .Error ("Nem lehet betölteni a bővítményeket: (0)", ex.message);)) ...
A LOADPLUGINS Húzza az osztályunk tervezőjét. A részletesen megmagyarázni a letöltési mechanizmus nem - a Google jobban megbirkózik.

Menjen a Delegált Check típusra ugráljon. A feltételek bekapcsolódnak, amíg az első fog működni - az exkluzív módszer:

Privát messageinfo bouncetypecheck (próbálja meg (var res \u003d condition.value.check (mailuffo.mail); ha (res \u003d\u003d null) folytatódik; mailufo.subtype \u003d res; logger.log .debug ("Bounce Type állapot [(0)] Üzenetet indított [(1)], állapot.metadata.type, mailInfo.mail.headers.messageID); szünet;)) Catch (kivétel ex) (Logger.log .Error ("Nem sikerült meghatározni az üzenet típusát" (0) ": (1)", mailInfo.mail.headers.messageid, ex.message); logger.errorscounters.Increment ();) Visszatérés MainInfo;)
Így, ha egy új logika csak elegendő ahhoz, hogy új osztályt adjon hozzá a projekthez olyan pluginokkal, amelyek végrehajtják az interfészt és a voila! A második plugin példája a levél feladójának meghatározásához nem alkalmazandó - így már egy hosszú hozzászólás (az automatikus válasz a kiszolgálót generálta, így a feladónak is a levél fejlécéből kell festeni).

Az eredmények rögzítésével az adatbázisban is, semmi szokatlan. Például:

Privát Void AddtoBounce (MailWh.BounCeadd (mail); funkciók.Processedcounters.Increment (), funkciók.log.debug ("Küldés ugrál a MailWh");) fogás (kivétel ex) (FUNKCIÓS.LOG. Hiba történt Üzenet "(0)" mailwh: (1) ", mail.mail.headers.messageid, ex .message.messageid, ex .message.Increment ();))

Bounceadd.

nyilvános statikus hosszú bouncadd (VAR Conn \u003d Új SQLConnection (ConnectionTring) (VAR CMD \u003d új sqldataadapter ("bounceadd", conn)) (var test \u003d message.mail.findfirstpleintextversion () \u003d\u003d null? Message.mail.findfirsstmlversion () \u003d\u003d null? . getbodyastext (): message.mail.findfirstPlainTextVersion (). getbodyastext (); var Outid \u003d Új SqlParameter ( "@ id", sqldbtype.bigint) (Direction \u003d ParameterDirection.Output); cmd.selectcommand .CommandType \u003d CommandType.StoredProcedure; cmd.selectcommand.parameters.add (új sqlparameter (@ Rawmessage, Message.mail.rawmessage)); cmd.selectcommand.parameters.add (új sqlparameter (@ üzenet ", test)); cmd.selectcommand.parameters.add (új sqlparameter ("@ témakeznők", message.mail.headers.subject ?? "") "")); cmd.selectcommand.parameters.add (új sqlparameter (@ MessageId ", message.mail .Headers.messageid? cmd.selectcommand.parameters.add (New SqlParameter ("@ cím,", message.mail.headers.to.Address? "")); cmd.selectcomm and.parameters.add (új sqlparameter ("@ címent", message.mail.headers.from.address ?? ""); cmd.selectcommand.parameters.add (új SQLPARAMETER ("@ Matatequeed", DateTime.now); cmd.selectcommand.parameters.add (New SqlParameter ("@ bouncetypesyname", (objektum) message.subtype ?? dbnull.value)); cmd.selectCommand.parameters.add (új forrásfolt, (@ SourceFROM ", (objektum) üzenet.recipient ?? dbnull.value); // TODO: A ListID Support Cmd.selectCommand.parameters.Add (Új SQLPARAMETER ("@ LISTID", DBNULL.VALUE) cmd.selectcommand.parameters.add (outid); conn.open (); cmd.selectcommand.executenonquery (); Visszaadja az outid.value-t, amíg régóta? ?? 0; )))))))))


Sajnálom, hogy nem volt időm, hogy megmutassam a Topshelf-t - a bejegyzést, és már duzzadt.

következtetések

Ebben a leckében megtudtuk, hogy a levél gyűjtésének feladata lehet, hogy nem lehet olyan egyszerű. A fejlett rendszermag lehetővé teszi új eljárási lépések gyors hozzáadását, a dataflow blokkokat anélkül, hogy befolyásolná a meglévő logikát. A plug-in alrendszer lehetővé teszi, hogy gyorsan növelni a script-szerű logikáját elemzés, és az adatfolyam maga párhuzamba összes számítás (és megvan a képessége, hogy rugalmasan konfigurálja a többszálas egy adott gépen). A TopShelf adja meg a szolgáltatás üzemmódban és a konzol módban történő futtatását, hogy megkönnyítse a hibakeresést.

Véleményem szerint a Gmailnek az egyik legkényelmesebb webes interfésze van az e-mailben való munkához. A csak kellemes és kényelmes felület mellett az alkotók nem feledkeztek a funkcionális részről. Áramláncok, különböző mappák, szűrők stb. Mindez a világ egyik legnépszerűbb postai szolgáltatása volt a világon. Sokan nem tudnak olyan csodálatos lehetőséget, mint egy levélgyűjtő. Például egy vagy több postaláda van a domain nevében, de szabvány interfész A webmail és a postai ügyfelek nem elégedettek veled ( Mozilla Thunderbird, Microsoft Outlook, a denevér). Ebben az esetben használhatja az e-mail kollektorot és feldolgozhatja az összes levelet a Gmailen keresztül, hogyan kell ezt megtenni, most megnézzük.

  1. A Gmail-i fiókra van szükség, a regisztrációs folyamat meglehetősen egyszerű és gondolkodás és foglalkozás ezzel nem lesz nehéz.
  2. A regisztráció után a Gmailben meg kell mennie a beállításokhoz
  3. A beállításban válassza ki a "Fiókok és importálás" elemet

  4. Ebben a részben két elemet érdekel: "Levelek küldése:" és "Ellenőrizze az e-mailt más fiókokból (POP3 használatával):". Van linkek "Add más e-mail cím" és "Add hozzá a POP3 e-mail fiókot".

  5. Annak érdekében, hogy pénzt gyűjtsön egy másik postafiókból, kattintson a "Add hozzá a POP3 e-mail fiókodra". Megjelenik egy új ablak, amelyben be kell írnia a postafiók címét, és kattintson a "Tovább" gombra. Miután több mező jelenik meg, hogy ki kell töltenie:
    Felhasználónév
    Jelszó
    POP szerver és port - POP-kiszolgáló címe és portja a kiszolgálóhoz való csatlakozáshoz, amelyből az e-maileket gyűjtsük össze. Megtudhatja ezeket az információkat a postai szolgáltatás támogatására, általában a "Kérdések és válaszok" szakaszban közzéteszi.
    Tartsa a kapott betűk másolatát a kiszolgálón - Ha a jelölőnégyzet nincs telepítve, betűk letöltése után ezeket a betűket eltávolítják a postafiókból. .
    A betűk kézhezvételekor mindig biztonságos kapcsolatot (SSL) használjon - Telepítenie kell, ha a postai szolgáltatás biztonságos SSL-kapcsolatot használ.
    Hozzárendelje a bejövő üzenetek címkéjét - A címke, ez egy vizuális jel a levél közelében. Kényelmes a megértéshez, amelyen a postafiókban levelet küldtek.
    Archívum bejövő betűk (Ugrás a bejövő) - A postafiókból gyűjtött levelek archiválódnak, a bejövőjükben nem lesz.

  6. Kattintson a "Fiók hozzáadása" gombra, miután a Gmail ellenőrző levelet küld a megadott postafiókba. A levél két opciót választ ki az ellenőrzéshez, a linkhez és a kód ellenőrzéséhez. A linknek csak menjen, és helyezze be a kódot a megerősítő mezőbe. Könnyebben átmenni a linken, a kód nyilvánvalóan csak abban az esetben, ha hirtelen a link helytelenül jelenik meg a levélben.
  7. Nos, valójában minden, most fiókunk a Gmailen automatikusan összeállít egy leveleket egy másik postafiókból. Ha e vagy más címre válaszolnia kell ugyanazon Gmail használatával, kattintson a "Egyéb e-mail cím hozzáadása" linkre a Beállítások, töltse ki a mezőket:
    "Név:" - Adjon meg minden adatot, például a nevét.
    "Email cím:" - Adja meg a postai címet, amelynek nevében válaszolunk.
    Pipa "Használjon álnévként. "- Ezt a címet fogja használni, mint egy álnév a fő címet és amikor levéllel, ez jelenik meg a bejövő, részletesebben a Google Súgó linkre „Tovább ...”.
    Adjon meg egy másik címet a "Válasz" mezőben (opcionális) - Alapértelmezés szerint a válasz ugyanazon a címre kerül, amelyet elküldtek. A linkre kattintva megadhat egy másik postafiókot, amelyre a címre küldött levelek kerülnek kézbesítésre.
    Kattintson a "Tovább" gombra

  8. Ezután néhány több mezőt látunk, amelyeknek kitölteniük kell.
    SMTP szerver és port - Ezt az információt a postai szolgáltatásban kell megtalálni.
    Felhasználónév - Általában ez egy e-mail cím, ez egy bejelentkezés a postafiók eléréséhez.
    Jelszó - Jelszóhozzáférés a postafiókhoz.
    Védett kapcsolat TLS használatával (ajánlott) és biztonságos kapcsolat az SSL segítségével - A második opció (SSL) csak akkor választható ki, ha a postai szolgáltatás az ilyen típusú biztonságos kapcsolatot használja. Alapvetően kiválaszthatja az első elemet.

    Miután rákattintott a „Fiók hozzáadása”, egy csekket levelet küldenek, értelemszerűen azzal a kiegészítéssel, postaláda levelezést. Megerősítem, és minden készen áll.

Nos, valójában minden, így konfigurálhatja a betűk összeszerelését és a választ más dobozokból a Gmailen keresztül. Kis árnyalatot, üzenetlekérdezés menetrendjének más Gmail-postaládájába formák egymástól függetlenül külön-külön minden egyes ilyen postafiók. Azaz, az elküldött levelet a postaláda, ahonnan gyűjteni mail, a Gmail felületen, akkor nem jelenik meg azonnal, hanem csak ellenőrzés után. A periodicitás az ellenőrzés függ a számát és gyakoriságát a betűk bevitelével, hogy a postafiók, a postafiók, annál gyakrabban a betűk jönnek, annál gyakrabban kerül sor hitelesítésre. Nem módosíthatja ezt a paramétert, de a beállítások beállításait kényszerítheti.