Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Greške
  • Najbolji sakupljač pošte. Sakupljač pošte (otežava jednostavne stvari)

Najbolji sakupljač pošte. Sakupljač pošte (otežava jednostavne stvari)

Prebacivanje s jedne kartice s Gmaila na drugu uz Yandex.Mail je prilično zamorno. A ako imate desetak naloga kod različitih provajdera pošte, provjeravanje nove korespondencije ujutro pretvara se u mučenje. Kombinovanjem slova na jednom mestu rešićete se ove neprijatnosti.

Web interfejs

Većina provajdera e-pošte nudi ugrađenu funkciju za prikupljanje e-pošte iz više poštanskih sandučića. Na primjer, hajde da pokušamo prikupiti pisma iz svih vaših poštanskih sandučića na jednom Gmail računu.

Prije svega, provjerite da li poštanski servis odakle želite da prikupljate pisma ima POP pristup. Zatim idite na svoje Gmail postavke i kliknite na "Postavke" u gornjem desnom uglu. Idite na karticu "Računi" i potražite odjeljak "Primanje pošte s drugih računa".

Dodajte nalog, unesite svoju adresu e-pošte i kliknite Dalje, a zatim unesite lozinku. Kako biste razmjenu pošte između provajdera učinili sigurnijom, uvjerite se da je omogućena opcija "Uvijek koristi sigurnu vezu (SSL) prilikom primanja pošte". Zatim kliknite na "Dodaj račun".

Sada će e-poruke koje stignu na dodanu adresu automatski prikupljati u Inbox vašeg Gmaila. Možete dodati onoliko poštanskih adresa koliko vam je potrebno.

Desktop klijenti

E-pošti je potreban softver. Da, možete mnogo da uradite u klijentu web pošte (ponekad mnogo više nego što vam Google trenutno dozvoljava u Gmail-u). Ali web interfejs se ne može porediti sa matičnom aplikacijom. Čak i najmoderniji Web UI predstavlja usko grlo za rukovanje poštom.

Rafe Needleman, Snet.com

Odlična stvar kod desktop klijenta e-pošte je to što mogu agregirati e-poštu s više računa. Istovremeno, možete raditi sa desetinama adresa i ne razmišljati o tome koji provajder pohranjuje ovu ili onu poruku.

Većina desktop klijenata e-pošte ima ugrađeno generičko prijemno sanduče. Čak i ako vaš omiljeni klijent podržava samo odvojene mape prijemnog sandučeta, i dalje ih možete lako prikupiti zajedno pomoću pametnih filtera.

Uprkos činjenici da je Outlook dizajniran za upravljanje više poštanskih sandučića u isto vrijeme, on i dalje prikazuje zasebno prijemno sanduče za svaki nalog. Ali to se lako može ispraviti filterima.

Otvorite Outlook, idite na karticu "Folders" i kliknite na "Create Search Folder" na traci sa alatkama. Zatim odaberite Create Custom Search Folder. Kliknite na "Odaberi", ali nemojte birati nijedan kriterij pretraživanja kako bi sve nove poruke bile poslane u folder. Imenujte folder kako god želite, kao što je Sva pošta.

Kliknite na "Pretraži", odaberite sve foldere i poštanske sandučiće iz kojih želite da prikupljate poštu i označite opciju "Traži u podfolderima".

Sada će se u pametnoj fascikli koju ste kreirali pojaviti pisma sa svih naloga e-pošte koje ste dodali u Outlook. Možete omogućiti opciju "Prikaži u omiljenim" tako da je vaša nova pošta uvijek na vidiku.

Mac klijent pošte pruža jedinstveno sanduče za sve povezane naloge. Samo dodajte svoje račune i sve nove e-poruke će biti sakupljene na jednom mjestu.

Thunderbird olakšava prikupljanje svih vaših e-poruka u jednom sandučetu. Idite na meni "Prikaz" (ako se traka menija ne prikazuje, pritisnite Alt). Zatim odaberite "Folders" → "Consolidated". Sada ćete imati jedno prijemno sanduče za nove e-poruke, jednu mapu Nacrti, jednu mapu Poslate stavke i jednu arhivu. Ne morate dugo tražiti šta je gdje. U tom slučaju, poruke će, kao i do sada, biti pohranjene na serverima vaših provajdera pošte.

Mobilni klijenti

Unified Inbox je dostupan u mnogim mobilnim klijentima e-pošte, uključujući Gmail. Aplikacija Gmail prikuplja vašu pristiglu poštu sa svih vaših naloga e-pošte, uključujući Yahoo, Outlook ili druge usluge.

Ako vam se ne sviđa Googleova aplikacija, možete isprobati klijente e-pošte treće strane kao što su Outlook ili MyMail.

Možda imate vlastite ideje kako grupirati poštu na jednom mjestu? Podijelite u komentarima.

Instrukcije

Prijavite se na svoj račun, za to idite na sljedeći link http://gmail.com i unesite svoje korisničko ime i lozinku.

Kliknite na ikonu zupčanika u gornjem desnom uglu "Računi i uvoz". Zatim idite na odjeljak "Šalji e-poštu kao" i kliknite na vezu "Dodajte vlastitu adresu e-pošte".

U novom iskačućem prozoru unesite ime i prezime na koje je registrovana dodata e-mail adresa, kao i adresu e-mail sandučeta. Kliknite na dugme "Sljedeći korak".

Zatim će vas ekran pitati kako slati pisma koristeći ovu adresu - koristeći Gmail servis ili mail interfejs iz QIP-a. Preporučljivo je da navedete Gmail, manje podešavanja, dakle, manje vremena će se potrošiti. Kliknite na dugme Next Action.

U sljedećem prozoru ćete biti obaviješteni da ćete nakon klika na dugme "Pošalji potvrdu" morati provjeriti navedenu e-poštu kako bi Gmail bio siguran u ispravnost e-mail adrese. Kliknite na dugme i otvorite svoje poštansko sanduče u novoj kartici.

Pregledajte svoje nepročitane e-poruke i otvorite e-poštu s naslovom "Gmail Confirmation". Kliknite na vezu da potvrdite postojanje ove adrese e-pošte ili kopirajte kod.

Ako ste kopirali kod, zalijepite ga u prazno polje prozora "Dodaj još ..." i kliknite na dugme "Provjeri". Nakon nekog vremena, ovaj prozor će se automatski zatvoriti i nova e-pošta će se pojaviti na listi "Šalji poštu kao".

Sada, slično kao što je opisano, morate dodati novu adresu u blok "Prikupi poštu sa drugih računa". Da biste to učinili, kliknite na vezu "Dodaj svoj POP3 mail nalog".

U novom iskačućem prozoru unesite adresu e-pošte. Kliknite na dugme Next Action. U sljedećem prozoru morate unijeti lozinku i aktivirati opcije "Uvijek koristi sigurnu vezu" i "Dodijeli prečicu za dolaznu e-poštu". Zatim kliknite na dugme "Dodaj račun". Nakon nekog vremena, ovaj prozor će se automatski zatvoriti i nova e-pošta će se pojaviti na listi "Prikupi poštu sa drugih naloga".

E-pošta je postala sastavni dio života korisnika na Internetu. Postoji mnogo resursa koji pružaju poštansko sanduče. Često je potrebno provjeriti Postojanje kutija, njegovu autentičnost. Ako trebate znati o autentičnosti adrese e-pošte, u tome nema ništa teško.

Instrukcije

Registrujte adresu e-pošte sa istim imenom ako ste zainteresovani za email kreiran na nekom besplatnom resursu. Već postojeći e-mail ne može se ponovo registrovati. Svi poznati serveri pošte imaju sistem povratnog poziva. U tom slučaju ćete dobiti obavijest o grešci, koja će vas obavijestiti o nemogućnosti daljnje registracije.

Pokušajte da napišete pismo sa dostupne e-pošte kutija na željeni e-mail. Poruka može biti sa ili bez teksta. Pošaljite ga i nakon nekog vremena provjerite da li vaša e-mail adresa ima poslanih pisama. Ako ste bili obaviješteni da vaše pismo nije stiglo na željenu adresu, onda ova pošta možda i ne postoji.

Registrirajte se u mreži "Moj svijet". Ovo je društvena mreža u Runetu, u kojoj mnogi korisnici komuniciraju. Koristite pretragu na računima drugih korisnika. Unesite željeni e-mail u polje za pretragu, koje se nalazi u desnom uglu na vrhu stranice sajta. Možete kliknuti na dugme "Ljudi". Bićete odvedeni na pretragu naloga na osnovu različitih kriterijuma. Samo unesite e-mail koji vas zanima u polje koje ćete pronaći pod nazivom "Traži". Morate kliknuti na "Pronađi". Ako je poštanska adresa važeća, tada ćete vidjeti informacije o vlasniku pošte.

Ako imate poštanske sandučiće na drugim poštanskim servisima, postavite sakupljač pošte tako da sve informacije budu na jednom mjestu.

Da bi kolektor ispravno radio, morate ga konfigurirati samo pod Mail.Ru računom. Uvjerite se da ste prijavljeni na svoj Mail.Ru nalog prije nego počnete prikupljati e-poštu sa drugih servisa pošte.

Da dodate kutiju:

  1. Kliknite na logo usluge na kojoj imate kutiju. Ako vaša usluga nije na listi, kliknite na "Ostala pošta".
  2. Unesite naziv poštanskog sandučeta i lozinku za njega, kliknite na "Dodaj". Ako vidite poruku o grešci, provjerite ispravnost unesenih podataka i pokušajte ponovo. Ako su informacije tačne, dobit ćete potvrdu i možete nastaviti s konfiguracijom sakupljača pošte.

Ovisno o tome koji protokol podržava uslugu na kojoj se poštanski sandučić nalazi, postavka se može razlikovati:

IMAP

  1. Odredite u koji folder želite premjestiti slova i kliknite na "Sačuvaj".
  2. Ako u poštanskom sandučetu imate lične foldere iz kojih ćete prikupljati poštu, oni će biti priloženi odabranom folderu.

Sistemske fascikle su takođe sinhronizovane: nacrti, poslate stavke, neželjena pošta i smeće. Ako nameravate da uvezete poruke iz poštanskog sandučeta treće strane u fasciklu Inbox, navedite da li želite da primenite filtere konfigurisane u trenutnom poštanskom sandučetu na dolazne poruke.

Ako je prikupljanje pisama konfigurirano korištenjem IMAP protokola, moći ćete odgovarati na pisma iz poštanskog sandučeta na koje je pismo poslano.

POP3

  1. Postavite potvrdni okvir "Sva pošta" da uvezete sva pisma iz poštanskog sandučeta. Ako želite da sve uvezene e-poruke označite kao pročitane, potvrdite izbor u polju za potvrdu Označi sve stare e-poruke kao pročitane.
  2. Izaberite u koji folder želite da stavite pisma iz ovog poštanskog sandučeta. Ako želite da kreirate novu fasciklu, označite polje ispod padajuće liste i unesite naziv fascikle.
  3. Da primenite filtere koji su konfigurisani u poštanskom sandučetu na poruke sa drugih servera, označite polje pored "Primeni filtere na primljene poruke".
  4. Kliknite na "Sačuvaj".

Dakle, možete odrediti do 9 poštanskih sandučića iz kojih će se pisma prikupljati. Da biste onemogućili sakupljač pošte, postavite prekidač u položaj OFF. Ako želite urediti postavke, kliknite na "Uredi". Da biste uklonili kolektora, kliknite na Ukloni.

Ovaj članak će se fokusirati na to što je "pošta iz drugih poštanskih sandučića" i "prikupljanje pisama s drugih računa". Pregledi poštanskih usluga i poređenja.

Kako se funkcionalnost mail servisa ažurira, vijesti ćemo objaviti na kraju ovog članka.

Mail.ru servis za poštu, Yandex i Google tražilice već nekoliko godina nude veoma korisnu i potrebnu funkcionalnost koja vam omogućava da u jednu poštu kombinujete sve ostale naloge e-pošte. Drugim riječima, vrijedi dodati i konfigurirati sve svoje "mailove" jednom, te će biti moguće upravljati njima u jednom prozoru bez stalnog unosa korisničkog imena i lozinke.

Usluge pošte nude nam ogroman prostor za skladištenje svih dolaznih e-poruka, korisničko sučelje, dobru funkcionalnost upravljanja i još mnogo toga. Da bismo testirali mogućnosti navedenih poštanskih servisa, izdvojićemo tri parametra za procenu njihovog rada: 1) potrebno je upravljati različitim e-mail nalozima, uključujući i sa raznih servisa i sajtova, preko jednog mail klijenta; 2) ima lični potpis i ime za svaku poštu; 3) brisanje pisama sa servera onih e-mail naloga koji su dodani u mail, yandex ili google mail.

Naš zadatak izgleda ovako:

Pa počnimo. Mi smo prvi koji je testirao uslugu Mail.ru, koja nam kaže: „Možete prikupljati poštu iz svih svojih poštanskih sandučića u jedno poštansko sanduče na Mail.ru.

Konfigurirajte prikupljanje e-pošte sa bilo kojeg servera koristeći IMAP ili POP3 protokol." Da biste dodali eksternu poštu osim @mail, @inbox, @list, @bk, morate imati barem jednu poštu koja je već dostupna na navedenim serverima iz pošte. Drugim riječima, prvo registrirajte e-poštu, a zatim dodajte druge mail naloge. Proces registracije za mail je jednostavan, nema smisla ga opisivati, ali ćemo opisati dodavanje drugih e-mailova na ovaj mail nalog.


Zatim će od vas biti zatraženo da unesete svoju prijavu i lozinku iz bilo kojeg poštanskog sandučeta koji koristite, a u roku od 3-5 minuta "Sakupljač pošte iz pošte" će kreirati folder sa imenom dodane pošte pored foldera "dolazni", "poslano", "spam" i drugo.


U stvari, sakupljač pisama će početi da radi u roku od 10-15 minuta i dodaće sva pisma u novokreirani folder iz poštanskog sandučeta koji ste naveli. Sva pristigla pisma za novu e-poštu će doći u ovaj folder, a biće moguće i slanje pisama iz priloženog sandučeta. Prilikom kreiranja novog pisma pojavit će se polje "Od" u kojem možete odabrati iz kojeg sandučeta će pismo biti poslano.


Prednosti Mail.ru servisa pošte uključuju jednostavnost dodavanja i lakoću konfigurisanja drugih poštanskih sandučića, odsustvo potrebe za navođenjem različitih protokola (POP3, SMTP). Ovo je veoma važno jer ne zna svaki korisnik šta je to.

Nedostaci Mail.ru su to što je nemoguće dodijeliti ime i potpis za svaku novododatu poštu (bilo koji novi e-mail, osim glavnog), odnosno primijenit će se ime i potpis glavne pošte na svaku adresu i to je to. Još jedan veliki nedostatak je to što prilikom slanja poruka na poštu ne postoji način da se originalne poruke automatski izbrišu sa priloženog servera poštanskog sandučeta. Zašto je toliko važno brisati poruke sa servera dodanog poštanskog sandučeta? Time ćete izbjeći popunjavanje priložene pošte, jer vanjski računi e-pošte su obično premali za pohranjivanje e-pošte. Na primjer, ako je prostor za poštu na vanjskom računu pun, Mail.ru neće prikazati nikakva nova slova dok ne uđete u vanjski interfejs za poštu i direktno izbrišete pisma odatle kako biste oslobodili prostor. Osim toga, vezujemo poštu za Mail u nadi da ćemo dobiti puno prostora za skladištenje naše pošte, što može biti ograničeno resursima za hostovanje. Stoga, uprkos činjenici da Mail.ru nudi gotovo neograničen broj poštanskog sandučeta, kada dodate poštu iz druge domenske zone (na primjer), vaši resursi dodane e-pošte neće se povećavati na Mail.ru, već će se nastaviti biti ograničen hostingom resursa (u našem slučaju resursi primer.ru).

Mogućnost dodavanja druge pošte servisu Mail nije odgovarala našem zadatku u dva od tri poena, ukupno jedan bod.


Istina, Mail.ru ima još jedan način dodavanja eksterne pošte, tačnije, povezivanja ili prijavljivanja na eksternu poštu. izgleda ovako:


Ova metoda nije prikladna za naš zadatak, jer to nije sakupljač pošte, već korisnički mod koji se povezuje na poštu i svaki put učitava sve foldere i pisma u interfejs pošte. Ali ovdje je moguće dodati lični potpis i ime za svaku poštu, moguće je slati pisma iz konfigurirane pošte. Brisanje poruka iz učitanih poštanskih sandučića ne radi, jer nije sakupljač pošte.

Bitan! Neki korisnici pogrešno misle da ako se slova prikažu u pošti, onda se pošta iz koje je došlo do preuzimanja može obrisati. Imajte na umu još jednom da Mail.ru radi kao preglednik pošte i ako obrišete poštu, ona će biti izbrisana i u glavnom poštanskom sandučetu i u pošti.

Drugi subjekt testiranja je Yandex sa svojim sakupljačem pošte. Zadaci su slični: prikupiti poštu, dodijeliti potpis i ime za svaku poštu i izbrisati svu poštu iz dodanog poštanskog sandučeta.

Yandex sakupljač pošte konfiguriran je na sličan način, ali ako je pošta povezana s neke stranice, na primjer site.ru, tada ćete morati registrirati dodatne postavke, pogledajte snimku zaslona.


Usluga Mail je to uradila za nas, dok Yandex nudi ručno postavljanje svih postavki iz pošte treće strane. Ovdje nema ništa komplikovano: u polje za prijavu unesite puno ime e-pošte (), u polje servera unesite samo domenu (site.ru), bolje je ostaviti sve ostale postavke prema zadanim postavkama ili promijeniti ako znaš šta radiš. Nakon uspješnog dodavanja pošte, pojavit će se sljedeća poruka:


Za razliku od sakupljača pošte, Yandex nudi izbor da li će originale pisama sačuvati u dodanom poštanskom sandučetu ili ne. U svemu ostalom Yandexov sakupljač pošte radi na sličan način kao Mail.ru, moguće je odabrati poštansko sanduče iz kojeg ćete poslati pismo. Ali Yandex ima isti problem sa potpisom pisama: ne postoji način da se postavi pojedinačno ime i potpis za svako dodano poštansko sanduče.


Sudeći po navigaciji, postoji mogućnost dodavanja pojedinačnog potpisa za svako poštansko sanduče, ali u stvarnosti to ne radi. Odaberemo mail, zapišemo ime i potpis, kliknemo na sačuvaj. To je to, potpis je sačuvan i radi, ali se čuva i za sve ostale poštanske sandučiće, odnosno dodeljivanjem imena i potpisa jednom poštanskom sandučetu automatski menjate ove parametre u svim mailovima kombinovanim u Yandexu. Čak i ako odaberete bilo koji drugi okvir, potpis će sada biti svugdje isti.

Sve u svemu, Yandex se uspješno nosio sa prikupljanjem i sortiranjem pošte, može izbrisati originale pisama iz dodanog poštanskog sandučića, ali ne može raditi s potpisima! Sakupljač pošte iz Yandexa nije se nosio s našim zadatkom i postiže dva boda od tri.


Napominjem da je, "preturajući" po sva tri servisa za sklapanje pisama, izgleda da je Mail na brzinu "šamarao" svoju funkcionalnost. Iako će zadovoljiti većinu korisnika, da budemo iskreni, Mail je napravio sakupljača pošte za pokazivanje, kako bi provjerili konkurentsku utrku. Sve radi dobro i bez kvarova, ali sakupljač iz Mail-a nije se nosio s našim zadatkom. U interfejsu pošte postoji nekoliko oglasnih jedinica, ali one ne ometaju rad sa slovima.

Što se tiče Yandexa, koji je davno kreirao sakupljač pisama, čini se da ova konkretna industrija nije podržana, jer popravljanje tako jednostavne funkcionalnosti (mogućnost dodavanja više potpisa za poštanske sandučiće) ne bi trebalo biti teško za tako moćnu pretragu motor. Ipak, Yandex ima još jednu jedinstvenu funkcionalnost koja vam omogućava da povežete domene sa njihovim dns serverima, a zatim kreirate i konfigurišete poštu. Ali takve operacije i postavke zahtijevaju znanje i vrijeme. I iako tu nema ništa komplicirano, u svakom slučaju, nije za većinu korisnika ruskog interneta. Velika prednost- nema oglasa u sučelju Yandex pošte! Oduzeti- Ograničenje u sakupljaču pisama na 10 poštanskih sandučića.

Finalista i pobjednik je skupljač pisama iz Gugla, koji se sa našim zadatkom nosio s praskom, uprkos čak ograničenje od 5 kutija

Nedavno je objavljena sljedeća verzija Mail.Ru Mail-a za iPhone i iPad. Glavno ažuriranje je jedno, ali značajno: to je mogućnost prikupljanja svih poštanskih sandučića korisnika na jednom mjestu, odnosno u aplikaciji Mail.Ru Mail.

Sva pošta na jednom mestu. Većina nas ima nekoliko e-mailova - za posao, za registraciju na svim vrstama foruma, kuponskih stranica i online prodavnica, i za dušu (čitaj - za komunikaciju sa prijateljima, rođacima itd.). U prethodnoj verziji aplikacije Mail.Ru, programeri su napravili prvi korak ka pojednostavljenju upravljanja "zoološkim vrtom" naloga: dodali su podršku za više poštanskih sandučića.

Sada, u Mail.Ru Mail klijentu, možete raditi ne samo sa poštanskim sandučićima na ovoj usluzi, već i sa nalozima Gmail, Rambler, Outlook i drugih provajdera koji podržavaju IMAP / POP3. Prebacivanje između kutija je vrlo jednostavno - to je samo jedan klik. Dok korisnik pregledava jedan nalog, drugi strpljivo čekaju na red.

Aplikacija ne preuređuje redoslijed u različitim kutijama na svoj način. U svakom od naloga možete nastaviti da pratite tačno logiku rada na koju ste se uspeli naviknuti. Na primjer, u sučelju aplikacije Mail.Ru nazivi i struktura foldera, okvira za potvrdu i drugih postavki poštanskog sandučića na Gmailu ostat će isti kao u velikoj verziji Gmaila. Osim toga, u aplikaciji možete pojedinačno konfigurirati svaki od naloga: postaviti potpis, omogućiti ili onemogućiti prikaz ikona, konfigurirati rad sistema push-obavijesti.


Push obavještenja. Napredne push obavijesti zaslužuju posebno spomenuti. Prvo (a ovo je jedan od glavnih bonusa aplikacije), mogu se omogućiti čak i za račune na onim servisima koji ne mogu slati push.

Drugo, mogu se konfigurisati tačno onako kako želite, detaljno precizirajući u koje vreme dolaze i šta da prijave. Moguće je označiti adresate po imenu, poruke iz kojih ste spremni da čitate danonoćno (npr. pisma vaše majke), ili striktno od 9 do 19 sati (najvjerovatnije će to biti pisma klijenata ili kolege). Možete uključiti ili isključiti upozorenja za određene račune, foldere ili primaoce.

Programeri su pažljivo osigurali dugme koje vam omogućava da odjednom isključite obavještenja o slanju poruka s društvenih mreža ili usluga kupona. Također možete postaviti sadržaj push obavijesti: možda, iz razloga privatnosti, želite da sakrijete ime primaoca ili predmet pisma.

Brze akcije. Za praktičan rad sa slovima u aplikaciji postoji meni brzih radnji. Da biste pozvali ove magične dugmad, samo trebate prevući prstom s desna na lijevo po željenoj poruci na listi slova. Uz njihovu pomoć možete izbrisati pismo, staviti kvačicu, premjestiti ga u drugu mapu, poslati u neželjenu poštu itd. Sve radnje se izvode jednim klikom.

Avatari adresata i usluga pomoći će vam da se krećete u pošti. Oni su vidljivi na listi e-mailova, prilikom čitanja i pisanja e-pošte i, kao što je već spomenuto, u push obavijestima. Prilikom čitanja i pisanja pisma korisnik vidi avatar pošiljaoca ili primaoca, kao i pregled priloga. Ako su priložene fotografije ili crteži, prikazuju se sličice slika. Inače, priloge možete pogledati bez napuštanja blagajne, tj. direktno u aplikaciji.

Keširanje. Keširanje će biti vrlo korisno na onim mjestima gdje internet nije baš dobar, na primjer, u podzemnoj željeznici. Vlasnik pametnog telefona sa Mail.Ru mail klijentom moći će čitati tekstove i gledati fotografije čak i kada nema mreže.

Savjeti. Aplikacija traži od vas željeni email, u adresnu traku unesite prva slova (pod uslovom da ste bar jednom pisali ovom primaocu - nije bitno u glavnoj verziji Mail-a ili u aplikaciji). Osim toga, klijent će na vaš zahtjev dodati kontakte sa telefona na listu ispitanika.

Budimo objektivni - Mail.Ru mail aplikacija je napravljena da traje. A ako ste ranije koristili fensi guranje, uživajte u avatarima na listi slova itd. bilo je moguće samo ako postoji poštanski sandučić na Mail.Ru, ali sada će korisnici istog Mail.Ru-a moći prikupiti ostatak poštanskih sandučića u aplikaciji (a oni koji preferiraju druge usluge, barem testiraju klijenta) .

Nastavljam seriju članaka o funkciji prikupljanja pošte na jedan glavni e-mail sandučić iz bilo kojeg drugog koji se nalazi na bilo kojem servisu pošte. U prošlom članku smo govorili o postavljanju prikupljanja pošte na servisu Yandex, što je jednostavno kao ljuštenje krušaka. A u ovom članku govorit ću o tome kako to učiniti na drugoj, danas ništa manje popularnoj usluzi - Mail.ru, gdje mnogi još uvijek drže svoj glavni e-mail pretinac, uprkos činjenici da, na primjer, usluga GMail ima jasan prednosti (opisao sam postavljanje prikupljanja pošte u Gmail-u). Ali kako se kaze,svakom svoje i nekada je to samo stvar navike :)

Postavljanje prikupljanja pošte u usluzi Mail.ru jednostavno je kao, na primjer, na Yandexu. Samo nekoliko jednostavnih koraka i sve će biti spremno, pošta će početi da teče iz poštanskih sandučića koje ste povezali na jedan, na Mail.

Proces konfiguracije prikupljanja pošte u servisu Mail.ru

Prije svega, prijavite se na svoj nalog na Mail, gdje ćete prikupljati poštu iz drugih e-mail sandučića i otvoriti odjeljak "Pisma" (tamo se nalazi pošta).

Sada morate ići na postavke pošte. Da biste to učinili, kliknite na dugme "Više" na vrhu i odaberite "Postavke".

Postavke također možete otvoriti tako što ćete kliknuti u gornjem desnom kutu svoje adrese e-pošte, a zatim odabrati “Postavke pošte”.

Zatim idite na odjeljak "Pošta iz drugih poštanskih sandučića".

Otvoriće se prvi prozor za povezivanje drugog e-mail sandučića.

Dozvolite mi da vas podsjetim da drugi e-mail sandučić iz kojeg želite da prikupljate pisma može biti smješten na bilo kojem servisu, a ne samo na Mail!

U primjeru za ovaj članak razmotrit ćemo povezivanje poštanskog sandučića koji se nalazi na Yandex-u.

U ovom prozoru potrebno je da navedete korisničko ime i lozinku za mail koji povezujete. Ako se poštanski sandučić koji povezujete nalazi na jednoj od dolje navedenih usluga, kliknite na odgovarajuće dugme na vrhu, unesite punu adresu povezane e-pošte ispod i kliknite na „Dodaj poštansko sanduče“:

Ako se sandučić koji želite da povežete nalazi na nekom drugom servisu (nije sa liste iznad), kliknite na dugme "Drugi mail" na vrhu, nakon čega je potrebno da unesete punu adresu povezane pošte, lozinku iz njega i kliknite na "Dodaj poštansko sanduče".

Ako još niste unijeli svoju drugu e-poštu u ovaj pretraživač, na koji se povezujete, tada ćete u sljedećem prozoru morati unijeti svoje korisničko ime i lozinku iz njega. primjer:

Nakon toga kliknite na "Dozvoli" (dopuštate pošti na Mail.ru da koristi neke od podataka povezane druge pošte).

Ako je sve prošlo kako treba, dobit ćete poruku da je kolektor dodan. Sada morate odabrati koji folder ćete prikupljati: u posebno kreiranu mapu prema nazivu pošte koju ste povezali ili u inbox. Na vama je da odlučite, ali, po mom mišljenju, zgodnije je kada pošta prikupljena iz drugog poštanskog sandučeta ide u poseban folder. Na ovaj ili onaj način, onda se to može konfigurirati filtriranjem slova.

Opcija “Primijeni filtere na primljene e-poruke” znači da će se svi filteri koje ste već konfigurirali u glavnoj pošti na Mail-u primjenjivati ​​i na poštu primljenu iz povezanog poštanskog sandučeta. Onemogućiti ili ne ovisi o vama.

To je to, sakupljač slova je postavljen! Sada, u roku od nekoliko minuta (ponekad proces kasni ako ima puno pisama na povezanoj pošti), pošta iz drugog poštanskog sandučeta će početi da teče u vaš glavni.

Na ovaj način možete povezati onoliko mailova koliko želite da prikupite.

Kako odvojeno vidjeti sva pisma iz povezane pošte?

Pisma možete gledati zasebno ako ste prilikom postavljanja prikupljanja pošte u Mail-u naznačili da se pisma prikupljaju u poseban folder s nazivom povezanog poštanskog sandučeta. U tom slučaju otvorite ovaj folder i vidjet ćete sva slova koja su vam potrebna. primjer:

Ako niste odmah konfigurirali prijem pisama u zasebnoj mapi, možete ga konfigurirati u bilo kojem trenutku otvaranjem kreiranog sakupljača (više o tome u nastavku).

Konfigurisanje kreiranog sakupljača slova, njegovo onemogućavanje i omogućavanje

Ponekad ćete možda morati promijeniti postavke sakupljača pošte koji ste kreirali u aplikaciji Mail, te ga također onemogućiti ili ponovo omogućiti.

To se može učiniti u istom odjeljku "Postavke" - "Pošta iz drugih poštanskih sandučića", gdje ste prvobitno kreirali svoj sakupljač pošte.

Ovdje ćete vidjeti generirani kolektor. Ako želite da ga isključite ili ponovo uključite, kliknite na odgovarajući prekidač. Ako trebate otvoriti postavke kolektora, kliknite na "Promijeni".

I otvorit će se iste postavke za sakupljač slova, kao u fazi njegovog kreiranja (vidi).

Ovaj članak će se fokusirati na to što je "pošta iz drugih poštanskih sandučića" i "prikupljanje pisama s drugih računa". Pregledi poštanskih usluga i poređenja.

Kako se funkcionalnost mail servisa ažurira, vijesti ćemo objaviti na kraju ovog članka.

Mail.ru servis za poštu, Yandex i Google tražilice već nekoliko godina nude veoma korisnu i potrebnu funkcionalnost koja vam omogućava da u jednu poštu kombinujete sve ostale naloge e-pošte. Drugim riječima, vrijedi dodati i konfigurirati sve svoje "mailove" jednom, te će biti moguće upravljati njima u jednom prozoru bez stalnog unosa korisničkog imena i lozinke.

Usluge pošte nude nam ogroman prostor za skladištenje svih dolaznih e-poruka, korisničko sučelje, dobru funkcionalnost upravljanja i još mnogo toga. Da bismo testirali mogućnosti navedenih poštanskih servisa, izdvojićemo tri parametra za procenu njihovog rada: 1) potrebno je upravljati različitim e-mail nalozima, uključujući i sa raznih servisa i sajtova, preko jednog mail klijenta; 2) ima lični potpis i ime za svaku poštu; 3) brisanje pisama sa servera onih e-mail naloga koji su dodani u mail, yandex ili google mail.

Naš zadatak izgleda ovako:

Pa počnimo. Mi smo prvi koji je testirao uslugu Mail.ru, koja nam kaže: „Možete prikupljati poštu iz svih svojih poštanskih sandučića u jedno poštansko sanduče na Mail.ru.

Konfigurirajte prikupljanje e-pošte sa bilo kojeg servera koristeći IMAP ili POP3 protokol." Da biste dodali eksternu poštu osim @mail, @inbox, @list, @bk, morate imati barem jednu poštu koja je već dostupna na navedenim serverima iz pošte. Drugim riječima, prvo registrirajte e-poštu, a zatim dodajte druge mail naloge. Proces registracije za mail je jednostavan, nema smisla ga opisivati, ali ćemo opisati dodavanje drugih e-mailova na ovaj mail nalog.

Zatim će od vas biti zatraženo da unesete svoju prijavu i lozinku iz bilo kojeg poštanskog sandučeta koji koristite, a u roku od 3-5 minuta "Sakupljač pošte iz pošte" će kreirati folder sa imenom dodane pošte pored foldera "dolazni", "poslano", "spam" i drugo.

U stvari, sakupljač pisama će početi da radi u roku od 10-15 minuta i dodaće sva pisma u novokreirani folder iz poštanskog sandučeta koji ste naveli. Sva pristigla pisma za novu e-poštu će doći u ovaj folder, a biće moguće i slanje pisama iz priloženog sandučeta. Prilikom kreiranja novog pisma pojavit će se polje "Od" u kojem možete odabrati iz kojeg sandučeta će pismo biti poslano.

Prednosti Mail.ru servisa pošte uključuju jednostavnost dodavanja i lakoću konfigurisanja drugih poštanskih sandučića, odsustvo potrebe za navođenjem različitih protokola (POP3, SMTP). Ovo je veoma važno jer ne zna svaki korisnik šta je to.

Nedostaci Mail.ru su to što je nemoguće dodijeliti ime i potpis za svaku novododatu poštu (bilo koji novi e-mail, osim glavnog), odnosno primijenit će se ime i potpis glavne pošte na svaku adresu i to je to. Još jedan veliki nedostatak je to što prilikom slanja poruka na poštu ne postoji način da se originalne poruke automatski izbrišu sa priloženog servera poštanskog sandučeta. Zašto je toliko važno brisati poruke sa servera dodanog poštanskog sandučeta? Time ćete izbjeći popunjavanje priložene pošte, jer vanjski računi e-pošte su obično premali za pohranjivanje e-pošte. Na primjer, ako je prostor za poštu na vanjskom računu pun, Mail.ru neće prikazati nikakva nova slova dok ne uđete u vanjski interfejs za poštu i direktno izbrišete pisma odatle kako biste oslobodili prostor. Osim toga, vezujemo poštu za Mail u nadi da ćemo dobiti puno prostora za skladištenje naše pošte, što može biti ograničeno resursima za hostovanje. Dakle, uprkos činjenici da Mail.ru nudi gotovo neograničen volumen poštanskog sandučeta, prilikom dodavanja pošte iz druge domenske zone (npr. [email protected]), vaši dodani resursi e-pošte neće se povećavati na Mail.ru, ali će i dalje biti ograničeni resursima hostinga (u našem slučaju resursi primer.ru).

Mogućnost dodavanja druge pošte servisu Mail nije odgovarala našem zadatku u dva od tri poena, ukupno jedan bod.

Istina, Mail.ru ima još jedan način dodavanja eksterne pošte, tačnije, povezivanja ili prijavljivanja na eksternu poštu. izgleda ovako:

Ova metoda nije prikladna za naš zadatak, jer to nije sakupljač pošte, već korisnički mod koji se povezuje na poštu i svaki put učitava sve foldere i pisma u interfejs pošte. Ali ovdje je moguće dodati lični potpis i ime za svaku poštu, moguće je slati pisma iz konfigurirane pošte. Brisanje poruka iz učitanih poštanskih sandučića ne radi, jer nije sakupljač pošte.

Bitan! Neki korisnici pogrešno misle da ako se slova prikažu u pošti, onda se pošta iz koje je došlo do preuzimanja može obrisati. Imajte na umu još jednom da Mail.ru radi kao preglednik pošte i ako obrišete poštu, ona će biti izbrisana i u glavnom poštanskom sandučetu i u pošti.

Drugi subjekt testiranja je Yandex sa svojim sakupljačem pošte. Zadaci su slični: prikupiti poštu, dodijeliti potpis i ime za svaku poštu i izbrisati svu poštu iz dodanog poštanskog sandučeta.

Yandex sakupljač pošte konfiguriran je na sličan način, ali ako je pošta povezana s neke stranice, na primjer site.ru, tada ćete morati registrirati dodatne postavke, pogledajte snimku zaslona.

Usluga Mail je to uradila za nas, dok Yandex nudi ručno postavljanje svih postavki iz pošte treće strane. Ovdje nema ništa komplikovano: u polje za prijavu unesite puno ime e-pošte ( [email protected]), u polje server unesite samo domenu (site.ru), bolje je da sve ostale postavke ostavite podrazumevano, ili promenite ako znate šta radite. Nakon uspješnog dodavanja pošte, pojavit će se sljedeća poruka:

Za razliku od sakupljača pošte, Yandex nudi izbor da li će originale pisama sačuvati u dodanom poštanskom sandučetu ili ne. U svemu ostalom Yandexov sakupljač pošte radi na sličan način kao Mail.ru, moguće je odabrati poštansko sanduče iz kojeg ćete poslati pismo. Ali Yandex ima isti problem sa potpisom pisama: ne postoji način da se postavi pojedinačno ime i potpis za svako dodano poštansko sanduče.

Sudeći po navigaciji, postoji mogućnost dodavanja pojedinačnog potpisa za svako poštansko sanduče, ali u stvarnosti to ne radi. Odaberemo mail, zapišemo ime i potpis, kliknemo na sačuvaj. To je to, potpis je sačuvan i radi, ali se čuva i za sve ostale poštanske sandučiće, odnosno dodeljivanjem imena i potpisa jednom poštanskom sandučetu automatski menjate ove parametre u svim mailovima kombinovanim u Yandexu. Čak i ako odaberete bilo koji drugi okvir, potpis će sada biti svugdje isti.

Sve u svemu, Yandex se uspješno nosio sa prikupljanjem i sortiranjem pošte, može izbrisati originale pisama iz dodanog poštanskog sandučića, ali ne može raditi s potpisima! Sakupljač pošte iz Yandexa nije se nosio s našim zadatkom i postiže dva boda od tri.

Napominjem da je, "preturajući" po sva tri servisa za sklapanje pisama, izgleda da je Mail na brzinu "šamarao" svoju funkcionalnost. Iako će zadovoljiti većinu korisnika, da budemo iskreni, Mail je napravio sakupljača pošte za pokazivanje, kako bi provjerili konkurentsku utrku. Sve radi dobro i bez kvarova, ali sakupljač iz Mail-a nije se nosio s našim zadatkom. U interfejsu pošte postoji nekoliko oglasnih jedinica, ali one ne ometaju rad sa slovima.

Što se tiče Yandexa, koji je davno kreirao sakupljač pisama, čini se da ova konkretna industrija nije podržana, jer popravljanje tako jednostavne funkcionalnosti (mogućnost dodavanja više potpisa za poštanske sandučiće) ne bi trebalo biti teško za tako moćnu pretragu motor. Ipak, Yandex ima još jednu jedinstvenu funkcionalnost koja vam omogućava da povežete domene sa njihovim dns serverima, a zatim kreirate i konfigurišete poštu. Ali takve operacije i postavke zahtijevaju znanje i vrijeme. I iako tu nema ništa komplicirano, u svakom slučaju, nije za većinu korisnika ruskog interneta. Velika prednost- nema oglasa u sučelju Yandex pošte! Oduzeti- Ograničenje u sakupljaču pisama na 10 poštanskih sandučića.

Finalista i pobjednik je skupljač pisama iz Gugla, koji se sa našim zadatkom nosio s praskom, uprkos čak ograničenje od 5 kutija

Naravno, sve treba uporediti. Ovdje dolazi u igru ​​moja omiljena TPL DataFlow biblioteka.

Prikupljat ćemo poštu koristeći POP3. Sve "modne stvari" IMAP-a u ovom zadatku su suvišne - potrebno je što brže i lakše pokupiti izvor pisma i izbrisati ga na serveru. POP3 je ovdje dovoljan za oči. Koristimo OpenPop.NET.

Kao opcionu funkciju, pooštrit ćemo nadzor u Zabbixu. (Radit ćemo 24/7 i objaviti hvaljenu brzinu - ovo morate pratiti).

Idi

Kreirajmo običnu konzolnu aplikaciju. Otvorite NuGet konzolu i instalirajte sve potrebne pakete:

Instalacijski paket Nlog Instalacijski paket OpenPop.NET Instalacijski paket TopShelf Instalacijski paket Microsoft.TPL.DataFlow
Idite u fasciklu projekta, kreirajte App.Debug.config i App.Release.config. Skinite projekat iz studija, otvorite njegov kod (U daljem tekstu, TopCrawler.csproj). Dodajte u odjeljak sa konfiguracijom:

Konfiguracije

App.config App.config


A ispod je prilagođeni cilj za MSBuild:

Transformirajte metu

$ (TargetFileName) .config


Lično sam se navikao na ovaj način - na starinski način - da dodam transformaciju konfiguracija u odvojena okruženja.
Radi praktičnosti, predlažem konfiguracije jakog tipa. Posebna klasa će čitati konfiguraciju. (O teorijskim aspektima takvog rješenja možete govoriti u komentarima). Konfiguracije, evidencije, nadzor su odličan razlog za implementaciju Singleton šablona.

Kreirajte istoimeni folder u projektu (mora postojati nalog). Unutra kreiramo 3 klase - Config, Logger, Zabbix. Naš drvosječa:

Logger

static class Logger (javni statički NLog.Logger Log (get; privatni skup;) javni statički NLog.Logger Archive (get; privatni skup;) static Logger () (Log = LogManager.GetLogger ("Global"); Archive = LogManager. GetLogger ("Arhivator");))


Nadgledanje sa Zabbixom zaslužuje poseban post, tako da ću ostaviti klasu koja implementira agenta ovdje:

Zabbix

imenski prostor TopCrawler.Singleton (///

/// Singleton: zabbix klasa pošiljatelja /// static class Zabbix (javni statički ZabbixSender Sender (get; privatni skup;) statički Zabbix () (Pošiljalac = novi ZabbixSender (Config.ZabbixServer, Config.ZabbixPort);)) struct ZabbixItem (javni string vrijednost; javni string ključ; javni string ključ; ) klasa ZabbixSender (interna struktura SendItem (// ReSharper onemogućuje InconsistentNaming - Zabbix je javni host niza osjetljiv na velika i mala slova; javni ključ niza; javna vrijednost stringa; javni sat stringa; // ReSharper vraća InconsistentNaming) #pragma upozorenje onemogućuje 0649 interni restruct Zabbix ( public string Response; public string Info;) #pragma warning restore 0649 #region --- Konstante --- public const string DefaultHeader = "ZBXD \ x01"; public const string SendRequest = "podaci pošiljatelja"; public const int Default Timeout = 10000 ; #endregion #region --- Polja --- privatno samo za čitanje DateTime _dtUnixMinTime = DateTime.SpecifyKind (novi DateTime (1970, 1, 1), DateTimeKind.Utc); privatno samo za čitanje int _timeout; privatni string samo za čitanje _zabbixserver; privatno samo za čitanje int _zabbixport; #endregion #region --- Konstruktori --- javni ZabbixSender (string zabbixserver, int zabbixport): ovo (zabbixserver, zabbixport, DefaultTimeout) () javni ZabbixSender (string zabbixserver, int zabbixport, int zabixport = zabixport) (_zab zabixport; = timeout;) #endregion #region --- Metode --- javni string SendData (ZabbixItem itm) (povratak SendData (nova lista (1) (ITM)); ) javni string SendData (Lista lstData) (pokušajte (var serijalizer = novi JavaScriptSerializer (); var vrijednosti = nova lista (lstData.Count); values.AddRange (lstData.Select (itm => novi SendItem (host = itm.Host, ključ = itm.Key, vrijednost = itm.Value, sat = Math.Floor ((DateTime.Now.ToUniversalTime () - _dtUnixMinTime).). TotalSeconds) .ToString (CultureInfo.InvariantCulture)))); var json = serializer.Serialize (novo (zahtjev = SendRequest, podaci = vrijednosti.ToArray ())); var zaglavlje = Encoding.ASCII.GetBytes (DefaultHeader); var length = BitConverter.GetBytes ((dugo) json.Length); var data = Encoding.ASCII.GetBytes (json); var paket = novi bajt; Buffer.BlockCopy (zaglavlje, 0, paket, 0, header.Length); Buffer.BlockCopy (dužina, 0, paket, header.Length, length.Length); Buffer.BlockCopy (podaci, 0, paket, header.Length + length.Length, data.Length); koristeći (var socket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) (socket.Connect (_zabbixserver, _zabbixport); socket.Send (packet); // Header var buffer = Da new byte; socket , bafer, 0, buffer.Length, _timeout); if (DefaultHeader! = Encoding.ASCII.GetString (buffer, 0, buffer.Length)) izbaci novi izuzetak ("Nevažeće zaglavlje"); // Bafer dužine poruke = novi bajt ; ReceivData (utičnica, bafer, 0, buffer.Length, _timeout); var dataLength = BitConverter.ToInt32 (bafer, 0); if (dataLength == 0) izbaci novi izuzetak ("Nevažeća dužina podataka"); // Međuspremnik poruka = novi bajt; ReceivData (utičnica, bafer, 0, buffer.Length, _timeout); var odgovor = serializer.Deserialize (Encoding.ASCII.GetString (bafer, 0, buffer.Length)); return string.Format ("Odgovor: (0), Info: (1)", odgovor.Odgovor, odgovor.Info); = Environment.TickCount; var primljen = 0; uradi (ako (Environment.TickCount> startTickCount + timeout) izbaci novi TimeoutException (); pokušaj (primljeno + = pObjSocket.Receive (bafer, pomak + primljeno, veličina - primljeno, SocketFlags.None)) ;) catch (SocketException ex) (if (ex.SocketErrorCode == SocketError.WouldBlock || ex.SocketErrorCode == SocketError.IOPending || ex.SocketErrorCode == SocketError.NoBufferSpace) while else) throwAvaceleepSpaceA;< size); } #endregion } }


Konfiguracije... Vrijeme je da uradimo barem nešto zanimljivo. Prvo ćemo pohraniti kutije koje prozivamo u konfiguracije. Drugo, postavke protoka podataka. predlažem ovo:

Configs



Dakle, host i port na koji se povezuje, korisnik i lozinka - ovdje je sve jasno. Sljedeća je vrsta kutije. Recimo da uslugu koristi marketing (kao i drugi odjeli). Imaju poštanske sandučiće u koje se izbacuju automatski odgovori na mailing, kao i FBL spam izvještaji. Samo poštansko sanduče već kategorizira pismo, stoga za takve situacije odmah postavljamo tip poštanskog sandučeta. Sa postavkama DataFlow-a, to će biti jasno kasnije kada počnemo kreirati objekte. Ovdje ćemo imati vlastite sekcije u konfiguraciji. Postoji mnogo priručnika kako to učiniti, pa ću samo pokazati rezultat:

Definiranje tipova

#region --- Tipovi --- statička klasa MailboxType (javni const string Bo = "bo"; javni const string Crm = "crm"; javni const string Fbl = "fbl"; javni const string Bounce = "bounce";) class MailboxInfo (javni string Vrsta (get; set;) javni string Ime hosta (get; set;) javni string Korisnik (get; set;) javni string Lozinka (get; set;) javni int Port (get; set;)) klasa klasa DataBlockOptions (public int Maxdop (get; set;) public int BoundedCapacity (get; set;) public DataBlockOptions () (Maxdop = 1; BoundedCapacity = 1;)) #endregion


Kreirajte sekcije

///

/// Custom config section /// javna klasa CustomSettingsConfigSection: ConfigurationSection (javni CredentialsCollection CredentialItems (dobiti (povratna baza ["CredentialsList"] kao CredentialsCollection;)) javni DataBlockOptionsCollection DataFlowOptionsItems (dobiti (povratiti bazu) ["DataistFlow"]p DataistBlock;


///

/// Prilagođeno prikupljanje - lista vjerodajnica /// javna klasa CredentialsCollection: ConfigurationElementCollection, IEnumerable (zaštićeno nadjačavanje ConfigurationElement CreateNewElement () (vraćanje novog CredentialsElement ();) zaštićeno nadjačavanje objekta GetElementKey (element ConfigurationElement) (return ((CredentialsElement) element) .Username;) public CredentialsElement kao (dobiti (getialsE) Basee (return); ) javni novi IEnumerator < Count; i++) { yield return BaseGet(i) as CredentialsElement; } } } /// /// Stavka prilagođenih akreditiva /// javna klasa CredentialsElement: ConfigurationElement (javni string Hostname (dobiti (povratiti bazu ["hostname"] kao string;)) javni string Korisničko ime (dobiti (vratiti bazu ["korisničko ime"] kao string;)) javni string Lozinka (dobiti (vratiti bazu baze) ["password"] kao string;)) public string Upišite (dobiti (vratiti bazu ["type"] kao string;)) javni string Port (dobiti (vratiti bazu ["port"] kao string;))) /// /// /// Prilagođena kolekcija - lista opcija DataBlock /// javna klasa DataBlockOptionsCollection: ConfigurationElementCollection, IEnumerable (zaštićeno nadjačavanje ConfigurationElement CreateNewElement () (vraćanje novog DataBlockOptionsElement ();) zaštićeno nadjačavanje objekta GetElementKey (ConfigurationElement element) (povratak ((DataBlockOptionsElement) element) .Name;) public Credentials (CredentialsEleturn this BaseGetlement) ) javni novi IEnumerator GetEnumerator () (za (var i = 0; i< Count; i++) { yield return BaseGet(i) as DataBlockOptionsElement; } } } /// /// Stavka prilagođenih opcija DataBlock /// javna klasa DataBlockOptionsElement: ConfigurationElement (javni string Ime (dobiti (povratna baza ["name"] kao string;)) javni string Maxdop (dobiti (povratna baza ["maxdop"] kao string;)) javni string BoundedCapacity (dobiti (povratna baza) ["boundedcapacity"] kao string;)))


Neću pisati potpunu implementaciju konfiguracije, pretpostavlja se da će se tokom procesa razvoja tamo dodati parametri koji su nam potrebni.

Pročitajmo naše prilagođene postavke ovako:

Čitaj

javna lista CredentialsList (dobi; privatni skup;) javni rječnik DataFlowOptionsList (get; privatni set;) ... static Config () (pokušajte (var customConfig = (CustomSettingsConfigSection) ConfigurationManager.GetSection ("CustomSettings"); // Dobijte poštanske sandučiće za svaki (var item u customConfig.CredentialItems) Credentials. new MailboxInfo (Hostname = item.Hostname, Port = Convert.ToInt32 (item.Port), User = item.Username, Type = item.Type, Password = item.Password)); // Get DataFlow postavke za svaki (var item in customConfig.DataFlowOptionsItems) DataFlowOptionsList.Add (item.Name, nove DataBlockOptions (Maxdop = Convert.ToInt32 (item.Maxdop), BoundedCapacity = Convert.ToInt32 (item.BoundedCapacity Fa)));) "catch (LoggerException)" (LoggerException) Greška pri čitanju konfiguracije: (0)", npr. Poruka); baci;))


Nekako ispadne jako dugotrajno, a nismo ni stigli do najzanimljivijeg.

Za sada, izostavimo TopShelf povez, brojače performansi, komunikaciju sa bazom podataka i pređimo na posao! Kreiramo klasu Crawler - jezgro. Prvo čitamo poštu:

Privatni volatile bool _stopPipeline; ... public void Start () (uradi (var getMailsTasks = _config.CredentialsList.Select (akreditivi => Task.Run (() => GetMails (krediti))). ToList (); foreach (var zadatak u getMailsTasks) zadatak .Wait (); Thread.Sleep (2000);) while (! _StopPipeline); // Zaustavi cjevovod - čekaj završetak svih krajnjih tačaka // Ovo će zaustaviti cjevovod protoka podataka ako (_stopPipeline) Logger.Log.Warn ("Pipeline korisnik je zaustavio ";)
Ovdje je lijenost učinila svoje i odlučio sam da se ne trudim - ako ima oko 20-30 kutija, možete pokrenuti zadatak za svaku i ne brinuti o broju niti. (Dozvolite mi da se istuširam sa paradajzom.)

Pređimo na samo čitanje:

Privatni void GetMails (Informacije o MailboxInfo) (pokušajte (koristeći (var client = new Pop3Client ()) (
Odmah izračunajmo vrijeme pristupa poštanskom sandučetu - korisno za dijagnosticiranje mreže i opterećenja servera.

// Dobij Zabbix metriku var štoperica = nova Štoperica (); štoperica.Start (); // Dobivanje broja pošte client.Connect (info.Hostname, info.Port, false); client.Authenticate (info.User, info.Password); štoperica.Stop ();
Slanje podataka u Zabbix. Jednostavno je - specificiramo ime hosta (kao što je u Zabbixu), ključ (opet, striktno, kao u Zabbixu) i vrijednost stringa.

// Pošaljite ga Zabbix Zabbix.Sender.SendData (novi ZabbixItem (Host = Config.HostKey, Key = info.Type + Config.TimingKey, Value = štoperica.ElapsedMilliseconds.ToString ())); Logger.Log.Debug ("Pošalji [(0)] tajming na Zabbix: povezan na" (1) "kao" (2) ", tajming (3) ms", info.Type, info.Hostname, info.User, štoperica.ElapsedMilliseconds); var count = client.GetMessageCount (); if (broj == 0) return; Logger.Log.Debug ("Mi" imamo nove (0) poruke u "(1)" ", count, info.User); // Pošaljite poruke u blok za sortiranje za (var i = 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);
Cjevovod DataFlow će biti kreiran kada se kreira klasa Crawler. Vjerujemo da je naš prvi korak sortiranje pisma.

Dok (! _SortMailDataBlock.Post (mailInfo)) Thread.Sleep (500);
Vidite kako je jednostavno - sam transporter je jedan. Svi zadaci koji čitaju poštu šalju poruke jednu po jednu. Ako je blok zauzet, Post će vratiti lažno i samo ćemo pričekati dok se ne oslobodi. Trenutni znoj i dalje djeluje u ovom trenutku. To je ono što ja zovem bezbrižna istovremenost.

Poruka je otišla na pokretnu traku, sada je možete bezbrižno sačuvati u RAW arhivu (da, sve što smo pročitali - čuvamo u fajl arhivu. Služba podrške će nam se zahvaliti kasnije).

Postavimo, na primjer, rotaciju arhive:

NLog.config



Onda možete postaviti logStash na to, ali to je druga priča...

// Sačuvajte svaki mail u arhivu Logger.Log.Debug ("Arhiva poruka"); Logger.Archive.Info (Functions.MessageToString (mailInfo.Mail)); ) catch (Exception ex) (Logger.Log.Error ("Parse email error: (0)", ex.Message); Functions.ErrorsCounters.Increment (); // Arhiviraj poštu svejedno Logger.Log.Debug ("Arhiviraj poruku "); Logger.Archive.Info (Encoding.Default.GetString (client.GetMessageAsBytes (i + 1)));) if (_config.DeleteMail) client.DeleteMessage (i + 1); if (_stopPipeline) break; ) Logger.Log.Debug ("Gotovo sa" (0) "", info.User); )) catch (Exception ex) (Logger.Log.Error ("Opća greška - tip: (0), poruka: (1)", ex, ex.Message); Functions.ErrorsCounters.Increment (;))
Ovdje smo koristili statičke brojače grešaka (u smislu tipova kutija), gdje su ErrorsCounters:

Javni statički rječnik ErrorsCounters = novi rječnik ();
A sami brojači se mogu uraditi ovako:

Counter.cs

class Counter (private long _counter; public Counter () (_counter = 0;) public void Increment () (Interlocked.Increment (ref _counter);) public long Read () (return _counter;) public long Refresh () (return Interlocked) .Exchange (ref _counter, 0);) public void Dodaj (duga vrijednost) (Interlocked.Add (ref _counter, value);) public void Set (duga vrijednost) (Interlocked.Exchange (ref _counter, value);))


Pređimo na kreiranje cjevovoda. Recimo da imamo kutije u koje se sipaju automatski odgovori. Takva pisma se moraju raščlaniti (kakav auto-odgovor, od koga, preko koje mailing liste, itd.) i staviti rezultat u skladište (DB). Recimo da postoje kutije u koje padaju FBL izvještaji. Takva slova dodajemo u bazu podataka odjednom. Sva ostala pisma smatramo "korisnima" - treba ih provjeriti na neželjenu poštu i poslati na vanjski sistem, na primjer, CRM.

Kao što ste već shvatili, ovaj primjer uglavnom razmatra korištenje sakupljača za marketinške zadatke - prikupljanje statistike o isporuci pošte, informacija o neželjenoj pošti.

Dakle, odlučili smo se za tok posla. Mi deklariramo potrebne blokove u klasi Crawler:

Class MessageInfo (javni bool IsSpam (get; set;) javna poruka Mail (get; set;) javni string Podtip (get; set;) javni string Primalac (get; set;) javni tip MessageType (get; set;) javni MailboxInfo Poštansko sanduče (get; set;)) class Crawler (// Privatni TransformBlock cjevovoda _sortMailDataBlock; privatni TransformBlock _spamFilterDataBlock; privatni TransformBlock _checkBounceDataBlock; privatni TransformBlock _identifyDataBlock; privatni ActionBlock _addToCrmDataBlock; privatni ActionBlock _addToFblDataBlock; privatni ActionBlock _addToBounceDataBlock; ...
Kreiramo metodu inicijalizacije i kreiramo blokove cjevovoda (koristimo naše divne sekcije iz konfiguracija za inicijalizaciju blokova):

Public void Init () (// *** Kreiraj cjevovod *** // Kreiraj TransformBlock da dobiješ tip poruke var blockOptions = _config.GetDataBlockOptions ("_ sortMailDataBlock"); _sortMailDataBlock = new TransformBlock (mail => SortMail (mail), novi ExecutionDataflowBlockOptions (MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity)); // Kreirajte TransformBlock za filtriranje neželjene pošte blockOptions = _config.GetDataBlockOptions ("_ spamFilterDataBlock"); _spamFilterDataBlock = novi TransformBlock (mail => FilterSpam (mail), novi ExecutionDataflowBlockOptions (MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity)); // Kreirajte TransformBlock za sortiranje odbijanja blockOptions = _config.GetDataBlockOptions ("_ checkBounceDataBlock"); _checkBounceDataBlock = novi TransformBlock (mail => BounceTypeCheck (mail), novi ExecutionDataflowBlockOptions (MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity)); // Kreirajte TransformBlock za identifikaciju vlasnika odbijanja blockOptions = _config.GetDataBlockOptions ("_ identifyDataBlock"); _identifyDataBlock = novi TransformBlock (mail => GetRecipient (mail), novi ExecutionDataflowBlockOptions (MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity)); // Kreirajte ActionBlock za slanje pošte na CRM blockOptions = _config.GetDataBlockOptions ("_ addToCrmDataBlock"); _addToCrmDataBlock = novi ActionBlock (mail => AddToCrm (mail), novi ExecutionDataflowBlockOptions (MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity)); // Kreirajte ActionBlock za slanje FBL-a na MailWH blockOptions = _config.GetDataBlockOptions ("_ addToFblDataBlock"); _addToFblDataBlock = novi ActionBlock (mail => AddToFbl (mail), novi ExecutionDataflowBlockOptions (MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity)); // Kreirajte ActionBlock za slanje Bounce na MailWH blockOptions = _config.GetDataBlockOptions ("_ addToBounceDataBlock"); _addToBounceDataBlock = novi ActionBlock (mail => AddToBounce (mail), novi ExecutionDataflowBlockOptions (MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity));
Sastavljamo transporter u skladu sa našom šemom:

// *** Graditi cevovod *** _sortMailDataBlock.LinkTo (_spamFilterDataBlock, info => info.Type == MessageType.GENERAL); _sortMailDataBlock.LinkTo (_addToFblDataBlock, info => info.Type == MessageType.FBL); _sortMailDataBlock.LinkTo (_checkBounceDataBlock, info => info.Type == MessageType.BOUNCE); _sortMailDataBlock.LinkTo (DataflowBlock.NullTarget (), info => info.Type == MessageType.UNKNOWN); / * STUB * / _checkBounceDataBlock.LinkTo (_identifyDataBlock); _identifyDataBlock.LinkTo (_addToBounceDataBlock); _spamFilterDataBlock.LinkTo (_addToCrmDataBlock, info =>! info.IsSpam); _spamFilterDataBlock.LinkTo (DataflowBlock.NullTarget (), info => info.IsSpam); / * STUB * /
Kao što vidite, sve je izuzetno jednostavno - povezujemo blok sa sljedećim (sa mogućnošću postavljanja uvjeta veze). Svi blokovi se izvode paralelno. Svaki blok ima određeni stupanj paralelizma i kapaciteta (koristeći kapacitet, možete podesiti red prije bloka, odnosno blok je primio poruku, ali se još ne obrađuje). Dakle, možete postaviti visok stepen paralelizma za "složene" i dugotrajne operacije, kao što je raščlanjivanje sadržaja e-pošte.

Neću opisivati ​​DataFlow materijal, bolje je pročitati sve u originalnom izvoru TPL DataFlow.

SortMailDataBlock.Completion.ContinueWith (t => (if (t.IsFaulted) ((IDataflowBlock) _spamFilterDataBlock) .Fault (t.Exception); else _spamFilterDataBlock.Complete ();)); _sortMailDataBlock.Completion.ContinueWith (t => (if (t.IsFaulted) ((IDataflowBlock) _addToFblDataBlock) .Fault (t.Exception); else _addToFblDataBlock.Complete ();)); _sortMailDataBlock.Completion.ContinueWith (t => (if (t.IsFaulted) ((IDataflowBlock) _checkBounceDataBlock) .Fault (t.Exception); else) _checkBounceDataBlock.Complete ();)); _spamFilterDataBlock.Completion.ContinueWith (t => (ako (t.IsFaulted) ((IDataflowBlock) _addToCrmDataBlock) .Fault (t.Exception); else _addToCrmDataBlock.Complete ();)); _checkBounceDataBlock.Completion.ContinueWith (t => (if (t.IsFaulted) ((IDataflowBlock) _identifyDataBlock) .Fault (t.Exception); else _identifyDataBlock.Complete ();)); _identifyDataBlock.Completion.ContinueWith (t => (if (t.IsFaulted) ((IDataflowBlock) _addToBounceDataBlock) .Fault (t.Exception); else _addToBounceDataBlock.Complete ();)); )
Sve, zapravo, cevovod već radi, možete mu slati poruke. Ostaje samo da ga zaustavimo dodavanjem naše metode Start:

Počni

public void Start () (uradi (var getMailsTasks = _config.CredentialsList.Select (akreditivi => Task.Run (() => GetMails (krediti))). ToList (); foreach (var zadatak u getMailsTasks) zadatak. Čekaj ( ); Thread.Sleep (2000);) while (! _StopPipeline); // Zaustavi cjevovod - čekaj dovršetak svih krajnjih točaka _sortMailDataBlock.Complete (); _addToCrmDataBlock.Completion.Wait (); _addToFblDataBlock.Completion.Bounceadd); .Completion.Wait (); if (_stopPipeline) Logger.Log.Warn ("Cjevovod je zaustavio korisnik");)


Prelazimo na delegate.
Sortiranje... Pa, recimo da je ovde sve jednostavno (uvek imamo vremena da zakomplikujemo):

Private MessageInfo SortMail (MessageInfo mail) (switch (mail.Mailbox.Type) (case MailboxType.Crm: mail.Type = MessageType.GENERAL; break; case MailboxType.Bounce: mail.Type = MessageType.BOUNCE; break. Fbl: mail.Type = MessageType.FBL; prekid;) vrati poštu;)
Spam filter. Ovo je za domaći zadatak - koristite SpamAssassin.
Evo delegata za vas:

Private MessageInfo FilterSpam (MessageInfo mail) (// TODO: Add SpamAssassin logic return mail;)
I klase za rad sa SpamAssassin API-jem (link do projekta).
I prelazimo na raščlanjivanje slova. Mi analiziramo autorske odgovore. Ovdje dolazi MEF.
Kreirajte projekat (dll) sa interfejsima za naše dodatke (pozovimo interfejse).
Dodajte interfejs:

Javni interfejs ICondition (provjera niza (Message mimeMessage);) javni interfejs IConditionMetadata (Type Type (get;))
I to je to. Naš TopCrawler ovisi o ovom projektu i projekat dodataka će ga također koristiti.
Kreirajte novi projekat (također dll), nazovite ga Conditions.
Dodajmo tipove automatskih odgovora:

#region --- Tipovi --- statička klasa BounceType (javni const string Full = "BounceTypeFull"; public const string Timeout = "BounceTypeTimeout"; public const string Refused = "BounceTypeRefused"; public const string NotFound = "BounceTypeNotFound"; const string Inactive = "BounceTypeInactive"; public const string OutOfOffice = "BounceTypeOutOfOffice"; public const string HostNotFound = "BounceTypeHostNotFound"; public const string NotAuthorized = "BounceTypeNotAuthorizedAuthorized";T horpe constNotAuthorized Mnogi
I klase koje implementiraju naš interfejs:

Javna klasa ConditionNotFound1: ICondition (javni niz Provjera (Message mimeMessage) (ako (! MimeMessage.MessagePart.IsMultiPart) vrati null; const string pattern = "Diagnostic-Code:. + Smtp. + 550"; var regexppan = new , RegexOptions.IgnoreCase); vrati mimeMessage.MessagePart.MessageParts.Any (part => part.ContentType.MediaType == "message / delivery-status" && regexp.IsMatch (part.GetBodyAsText ()))? BouncellType;):):) ) ... javna klasa ConditionTimeout2: ICondition (povratak BounceType.Timeout;) ...
Kao što vidite, sve je u atributima. Uz pomoć njih će se učitavati dodaci.
Vraćamo se na naš projekat i učitavamo dodatke:

Class Crawler (... // Plugins public IEnumerable > BounceTypeConditions (get; set;) private void LoadPlugins () (pokušajte (var container = new CompositionContainer (novi DirectoryCatalog (_config.PluginDirectory), true); container.ComposeParts (ovo);) catch (Exception ex) (Logger.Log .Error ("Nije moguće učitati dodatke: (0)", npr. Poruka;)) ...
Povlačimo LoadPlugins u konstruktoru naše klase. Neću detaljno objašnjavati mehanizam učitavanja - Google će proći bolje.

Prelazimo na naš delegat za provjeru valjanosti tipa odbijanja. Uslovi će se primenjivati ​​redom sve dok se ne aktivira prvi, isključivi metod:

Private MessageInfo BounceTypeCheck (MessageInfo mailInfo) (pokušajte (foreach (var uslov u BounceTypeConditions) (var res = condition.Value.Check (mailInfo.Mail); if (res == null) nastavi; mailInfo.Subtype = res; Logger.Log) .Debug ("Uslov tipa odbijanja [(0)] pokrenut za poruku [(1)]", condition.Metadata.Type, mailInfo.Mail.Headers.MessageId); break;)) catch (Exception ex) (Logger.Log .Error ("Nije uspjelo određivanje vrste odbijanja poruke" (0) ": (1)", mailInfo.Mail.Headers.MessageId, ex.Message); Logger.ErrorsCounters.Increment ();) return mailInfo;)
Dakle, ako se pojavi nova logika, dovoljno je jednostavno dodati novu klasu projektu sa dodacima koji implementiraju naše sučelje i - voila! Neću priložiti primjer drugog dodatka za određivanje pošiljaoca pisma - ovo je već dugačak post (automatski odgovor je generirao sam server, tako da se pošiljalac također mora raščlaniti iz zaglavlja pisma pismo).

Nema ničeg neobičnog sa evidentiranjem rezultata u bazi podataka. Na primjer, ovako:

Privatno void AddToBounce (MessageInfo mail) (pokušajte (MailWH.BounceAdd (mail); Functions.ProcessedCounters.Increment (); Functions.Log.Debug ("Send Bounce to MailWH");) catch (Exception ex) (Functions.Log. Greška ("Greška pri spremanju poruke odbijanja" (0) "na MailWH: (1)", mail.Mail.Headers.MessageId, ex.Message); Functions.ErrorsCounters.Increment (;))

BounceAdd

javni statički dugi BounceAdd (MessageInfo poruka) (koristeći (var conn = nova SqlConnection (ConnectionString)) koristeći (var cmd = novi SqlDataAdapter ("BounceAdd", conn)) (var body = message.Mail.FindFirstPlainTextVersion () == null? message.Mail.FindFirstHtmlVersion (). GetBodyAsText (): message.Mail.FindFirstPlainTextVersion (). GetBodyAsText (); var outId = novi SqlParameter ("@ ID", SqlDbType.BigInt) (Direction) (Direction) (Direction) (Direction) .CommandType = CommandType.StoredProcedure; cmd.SelectCommand.Parameters.Add (novi SqlParameter ("@ RawMessage", message.Mail.RawMessage)); cmd.SelectCommand.Parameters.Add (novi SqlParameter ("@)" poruka ; cmd.SelectCommand.Parameters.Add (novi SqlParameter ("@ Subject", message.Mail.Headers.Subject ?? "")); cmd.SelectCommand.Parameters.Add (novi SqlParameter ("@ MessageID", message.Mail .Headers.MessageId ?? "")); cmd.SelectCommand.Parameters.Add (novi SqlParameter ("@ AddressTo", message.Mail.Headers.To.Address ?? "")); cmd.SelectComm and.Parameters.Add (novi SqlParameter ("@ AddressFrom", message.Mail.Headers.From.Address ?? "")); cmd.SelectCommand.Parameters.Add (novi SqlParameter ("@ DateRecieved", DateTime.Now)); cmd.SelectCommand.Parameters.Add (novi SqlParameter ("@ BounceTypeSysName", (object) message.Subtype ?? DBNull.Value)); cmd.SelectCommand.Parameters.Add (novi SqlParameter ("@ SourceFrom", (object) message.Recipient ?? DBNull.Value)); // TODO: Dodaj ListId podršku cmd.SelectCommand.Parameters.Add (novi SqlParameter ("@ ListId", DBNull.Value)); cmd.SelectCommand.Parameters.Add (outId); conn.Open (); cmd.SelectCommand.ExecuteNonQuery (); return outId.Value as long? ?? 0; ))


Oprostite što nemam vremena da pokažem TopShelf - post je već previše naduvan.

zaključci

U ovom vodiču smo naučili da prikupljanje pošte može biti nezgodno. Razvijeno jezgro vam omogućava brzo dodavanje novih koraka procesa - DataFlow blokova, bez utjecaja na postojeću logiku. Dodatni podsistem vam omogućava da brzo izgradite logiku raščlanjivanja nalik skripti, a sam DataFlow paralelizira sve proračune (a mi imamo mogućnost fleksibilnog konfiguriranja višenitnog rada za određenu mašinu). TopShelf nam daje mogućnost pokretanja servisa iu servisnom iu režimu konzole radi lakšeg otklanjanja grešaka.

Fuh... Ako je interesantno, reći ću vam dalje kako da to stavite na šine Continious Integration, podesite autobuild-ove i objavite izdanje kroz VS Release Management.

Oznake: Dodaj oznake

Top srodni članci