We halen brieven uit de post. Wij werken met het IMAP-protocol. Herziening van Advanced Email Parcer - programma's voor het automatiseren van e-mailverwerking


E-mail- dit is het belangrijkste hulpmiddel voor het uitwisselen van informatie, en als u het voor uw werk gebruikt, bent u waarschijnlijk een situatie tegengekomen: er komt een brief in de mail met de gegevens die nodig zijn voor verwerking door het script. We zullen het hebben over Yandex-mail - in dit artikel zal ik met jullie, beste lezers, mijn ervaring delen over hoe je brieven uit een mailbox kunt halen, we zullen ook kijken naar de optie wanneer een brief een bijgevoegd bestand bevat - hoe je dit kunt detecteren en download het uiteindelijk voor verdere manipulaties ermee.

Ikzelf werd al heel lang geleden met dit probleem geconfronteerd, en hoewel ik weinig ervaring had met het werken met Yandex-e-mailprogramma's, besteedde ik veel tijd en zenuwen om het vereiste resultaat te bereiken. Mijn eerste fout was dat ik, net als veel webontwikkelaars, intensief naar vergelijkbare voorbeelden op internet begon te zoeken, maar de Yandex-hulp zelf niet gebruikte. Ja, er staat nuttige informatie in, ook al is deze erg klein, maar het is belangrijk genoeg om dit soort scripts te schrijven (meer hierover hieronder). Destijds was het nodig om een ​​script te schrijven, waarvan de essentie was: er werd een brief naar de Yandex-mail van de klant gestuurd met de prijslijst van goederen in xls-formaatéén keer per dag moest het worden verwerkt (geparseerd en vergeleken met gegevens uit de database van de online winkel en, afhankelijk van het resultaat, ergens iets worden bijgewerkt, uitgeschakeld of ingeschakeld).

En het eerste dat we zullen doen voordat we het script schrijven, is ons actieplan schetsen, dat uit negen punten zal bestaan:

  1. Laten we mail configureren om toegang te krijgen via mailprotocollen;
  2. Laten we de structuur zelf schetsen PHP-applicaties en beslissen over de bestandscodering;
  3. Laten we het leren kennen postprotocol IMAP en zijn mogelijkheden;
  4. Laten we verbinding maken met Yandex-mail met behulp van de login en het wachtwoord van uw account en in dit stadium fouten opsporen;
  5. Laten we de kop van de brief verwerken;
  6. Wij zullen de hoofdtekst van de brief ontvangen en verwerken;
  7. Ontvang en bewaar bijgevoegde bestanden;
  8. Visualiseer het uitgevoerde werk;
  9. Laten we conclusies trekken.

Het onderwerp is behoorlijk omvangrijk, maar ik zal proberen alles zo compact en duidelijk mogelijk te presenteren. Laten we beginnen.

E-mailinstellingen

Ga naar je mail en ga naar instellingen, zoals weergegeven in de onderstaande schermafbeelding:



Nu zijn we in de mailinstellingen via IMAP-protocollen en POP3:


Hier zullen velen de afbeelding zien zoals in de afbeelding hierboven, maar ik ben meer dan eens tegengekomen dat de toegang is uitgeschakeld. Als uw instellingen anders zijn, vinkt u daarom de vakjes aan zoals in de schermafbeelding. Voor ons is het belangrijkste om toegang via het IMAP-protocol toe te staan.

Applicatiestructuur en de codering ervan

In dit voorbeeld zullen we niet uitvinden complexe structuur applicatie, omdat het niet nodig is, maar we zullen alleen toevoegen wat nodig is (ik werk in de Sublime Text-editor):


  • tmp – de map waarin we eventuele bijgevoegde bestanden van de brief zullen downloaden;
  • .htaccess – het instellen van de serverkant, als je dat hebt Apache-server;
  • functies.php – we zullen onze functies hier toevoegen;
  • main.css – stijlbestand;
  • index.php – ingangspunt van de applicatie;

We zullen gebruik maken van UTF-8-codering en vullen het .htaccess-bestand daarom meteen met de volgende regels:

AddDefaultCharset utf-8 AddCharset utf-8 * CharsetSourceEnc utf-8 CharsetDefault utf-8

IMAP-protocol

Terugkomend op het eerste punt, kun je zien dat je ook met Yandex-mail kunt werken via het POP3-protocol. Dus waarom IMAP? Van de twee is IMAP het nieuwere en alternatief voor POP3, daarom heeft het een aantal voordelen (je kunt ze bestuderen met Wikipedia), maar in ons geval werd de keuze alleen beïnvloed door het feit dat het nieuwer is. Persoonlijk zie ik niet veel verschil met wat ik moet gebruiken specifieke taak een brief ontvangen. Als u om de een of andere reden het POP3-protocol moet gebruiken, zullen alle functies die van toepassing zijn op IMAP daarvoor werken.

Verbinding maken met Yandex-mail via het IMAP-protocol

Om verbinding te maken met e-mail, moeten we drie parameters kennen: e-maillogin, het wachtwoord en het adres mailserver. Als er geen problemen zijn met twee parameters, is de tweede te vinden in de Help van Yandex. Ik schreef hierboven over dit (het probleem dat bij mij opkwam) en schreef veel voorbeelden online, waarbij de derde parameter verkeerd is gespecificeerd en stel je voor dat er al fouten optreden in de verbindingsfase - dit is op zijn minst onaangenaam. Ik zal er niet omheen draaien en zal onmiddellijk een directe link naar de Yandex-pagina geven - instelling mailprogramma's . Dit is precies wat we nodig hebben om verbinding te maken:


Nu kunt u rechtstreeks naar de code zelf gaan:

Header("Inhoudstype: tekst/html; charset=utf-8"); fout_rapportage(0); require_once("functies.php"); $mail_login = "yandex_mail"; $mail_wachtwoord = "mail_wachtwoord"; $mail_imap = "(imap.yandex.ru:993/imap/ssl)"; // Lijst met bestandstypen waarmee rekening wordt gehouden $mail_filetypes = array("MSWORD"); $connection = imap_open($mail_imap, $mail_login, $mail_password); if(!$connection)( echo("Fout bij verbinden met mail - ".$mail_login); exit; )else( $msg_num = imap_num_msg($connection); $mails_data = array(); for($i = 1; $ i<= $msg_num; $i++){ /* Работать с каждым письмом из IMAP-потока будем тут */ } } imap_close($connection);

Allereerst specificeren we bovendien de UTF-8-codering met behulp van de header en schakelen we de weergave van fouten uit. We verbinden het function.php-bestand en specificeren de hierboven besproken instellingen. In de $mail_filetypes array specificeren we de bestandsformaten die we nodig hebben. Er werd besloten dit te doen om onnodig afval te verwijderen en specifieke bestanden te ontvangen. De verbinding met mail wordt tot stand gebracht met behulp van de functie imap_open(), die, indien succesvol, een IMAP-stream retourneert, en indien niet succesvol, false retourneert (maar als u de foutweergave inschakelt, is dit niet het geval). We voltooien het werken met streams met behulp van de functie imap_close() door er een verbindingsindicator aan door te geven. Tussen deze twee functies bevindt zich een reguliere voorwaardelijke verklaring.

Als de verbinding succesvol is, achterhalen we met behulp van imap_num_msg() het aantal letters in de mail en voegen we een array toe waarin we alle gegevens plaatsen die we nodig hebben uit de stream. Vervolgens komt er een cyclus waarin elke letter afzonderlijk wordt verwerkt op basis van zijn nummer (de nummering begint vanaf 1).

Verwerken van de kop van de brief

Om de koptekst van een brief te krijgen, moet je de functie imap_header() gebruiken, waarvan de tweede parameter het letternummer is:

// Briefkop $msg_header = imap_header($connection, $i);

In dit stadium ontvangen we een object waaruit we de gegevens zullen halen die we nodig hebben, en deze opslaan in de $mails_data array. Hier is een voorbeeld van een van de brieven:

Deze schermafbeelding laat zien dat alle gegevens worden gedupliceerd, maar dit speelt geen speciale rol, we gebruiken wat handiger is. Veel belangrijker is de codering van de onderwerpregel van de brief. Het kan van alles zijn en dit moment moet gecontroleerd worden. Dezelfde situatie is van toepassing op de hoofdtekst van de brief en de bijgevoegde bestanden.

$mails_data[$i]["tijd"] = tijd($msg_header->MailDate); $mails_data[$i]["date"] = $msg_header->MailDate; foreach($msg_header->to as $data)( $mails_data[$i]["to"] = $data->mailbox."@".$data->host; ) foreach($msg_header->from as $ data)( $mails_data[$i]["from"] = $data->mailbox."@".$data->host; )

We slaan in onze array op: de tijdstempel, de datum van ontvangst van de brief, de e-mail van de ontvanger en de afzender en gaan over tot ontvangst van het onderwerp van de brief. Om dit te doen, moeten we eerst drie functies toevoegen aan het function.php-bestand:

Functie check_utf8($charset)( if(strtolower($charset) != "utf-8")( return false; ) return true; ) function convert_to_utf8($in_charset, $str)( return iconv(strtolower($in_charset), "utf-8", $str ) functie get_imap_title($str)( $mime = imap_mime_header_decode($str); $title = ""; foreach($mime als $key => $m)( if(!check_utf8 ($m->charset))( $title .= convert_to_utf8($m->charset, $m->text); )else( $title .= $m->text; ) ) return $title )

De namen spreken voor zich en ik denk dat het de moeite waard is om alleen de laatste functie uit te leggen. Er is een gecodeerde string voor nodig en gebruikt imap_mime_header_decode() om deze te decoderen, wat resulteert in een array van objecten, elk met twee eigenschappen: charset en tekst. Dan is alles eenvoudig: de codering in een lus controleren, deze converteren naar UTF-8 en het onderwerp samenvoegen in een enkele header en deze retourneren.

Laten we nu teruggaan naar het index.php-bestand en de laatste parameter eruit halen:

$mails_data[$i]["title"] = get_imap_title($msg_header->onderwerp);

Hiermee is de verwerking van de e-mailheader voltooid.

Werken met de hoofdtekst van de brief

We blijven geleidelijk onze array vormen met de verwerkte gegevens van de letter en om nu de hoofdtekst te krijgen, moeten we twee functies gebruiken:

// E-mailtekst $msg_structure = imap_fetchstructure($connection, $i); $msg_body = imap_fetchbody($connection, $i, 1);

De eerste variabele $msg_structure bevat de structuur van de letter - dit is een object waarin je de massa kunt vinden nuttige informatie, hieronder vindt u een voorbeeld van een deel van dit object:

Wat is belangrijk om ons probleem op te lossen:

  • type – het primaire type van de hoofdtekst van de brief, afhankelijk van wat er per post naar ons toekomt, kan dit variëren van 0 tot 7 (elk cijfer geeft zijn eigen type inhoud aan dat zich in de hoofdtekst van de brief bevindt);
  • codering – codering van lichaamsoverdracht, varieert van 0 tot 5 (0 - 7BIT, 1 - 8BIT, 2 - BINARY, 3 - BASE64, 4 - QUOTED-PRINTABLE, 5 - ANDERE);
  • onderdelen – een reeks letteronderdelen die overeenkomen met de structuur van het object op een hoger niveau.

Laten we de eigenschap onderdelen eens nader bekijken. Het eerste dat moet worden gezegd, is dat er in de nulcel van deze array informatie staat die exact overeenkomt met de tekst van de brief, en beginnend bij de eerste - met de bijgevoegde bestanden. Ook wordt bij elk object het type aangegeven en in de parameters wordt de codering expliciet en impliciet aangegeven.

De structuur van de letter kan zo genest zijn als gewenst, ik heb tenminste gevallen gehad waarin deze vier of vijf niveaus bereikte, dus om hem op te splitsen, zoals ze zeggen, zullen we in de toekomst een recursieve functie moeten schrijven.

De tweede functie imap_fetchbody() haalt een specifiek deel van het bericht op, meestal in gecodeerde vorm.

Laten we nu een variabele toevoegen waarin we de verwerkte versie van de hoofdtekst van de brief opslaan:

$lichaam = "";

Laten we teruggaan naar het function.php-bestand en een recursieve functie schrijven:

Functie recursive_search($structure)( $encoding = ""; if($structure->subtype == "HTML" || $structure->type == 0)( if($structure->parameters->attribuut == " charset")( $charset = $structure->parameters->waarde; ) return array("encoding" => $structure->encoding, "charset" => strtolower($charset), "subtype" => $structure- >subtype); )else( if(isset($structure->parts))( return recursive_search($structure->parts); )else( if($structure->parameters->attribute == "charset")( $ charset = $structure->parameters->value ) return array("encoding" => $structure->encoding, "charset" => strtolower($charset), "subtype" => $structure->subtype ) ) )

De functie recursive_search() heeft één parameter nodig: de structuur van de letter, waar deze opeenvolgend de eigenschappen controleert en drie parameters krijgt: codering, tekenset, subtype. Het uitgangspunt van recursie is de afwezigheid van de eigenschap parts met cel nul. Er valt hier niets meer uit te leggen; ik denk dat het uit de code duidelijk is wat er gebeurt en hoe.

Laten we nog een functie toevoegen om de hoofdtekst van de brief te converteren, die we later nodig zullen hebben:

Functie structure_encoding($encoding, $msg_body)( switch((int) $encoding)( case 4: $body = imap_qprint($msg_body); break; case 3: $body = imap_base64($msg_body); break; case 2: $body = imap_binary($msg_body);

$recursive_data = recursive_search($msg_structure); if($recursive_data["encoding"] == 0 || $recursive_data["encoding"] == 1)( $body = $msg_body; ) if($recursive_data["encoding"] == 4)( $body = structure_encoding($recursive_data["encoding"], $msg_body); if($recursive_data["encoding"] == 3)( $body = structure_encoding($recursive_data["encoding"], $msg_body); ) if($ recursive_data ["encoding"] == 2)( $body = structure_encoding($recursive_data["encoding"], $msg_body); ) if(!check_utf8($recursive_data["charset"]))( $body = convert_to_utf8($ recursive_data ["tekenset"], $msg_body )

Nadat we de gegevens van recursie hebben ontvangen, controleren we geleidelijk de overdrachtscodering en roepen we, afhankelijk hiervan, de functie structure_encoding() aan met de juiste parameters. In de laatste voorwaardelijke operator We houden er rekening mee dat we in UTF-8 werken en als we na alle manipulaties een andere codering krijgen, zullen we deze opnieuw coderen.

Het blijft om de grens te trekken:

$mails_data[$i]["body"] = base64_encode($body);

De hoofdtekst van de brief kan het volgende bevatten platte tekst en HTML-opmaak met zijn eigen stijlen. We coderen in BASE64, zodat tijdens de visualisatie onze lay-out niet verandert.

Bijgevoegde bestanden

Hier naderen we geleidelijk het einde van het schrijven van onze aanvraag:

// Bijgevoegde bestanden if(isset($msg_structure->parts))( for($j = 1, $f = 2; $j< count($msg_structure->onderdelen); $j++, $f++)( if(in_array($msg_structure->parts[$j]->subtype, $mail_filetypes))( $mails_data[$i]["attachs"][$j]["type"] = $msg_structure->parts[$j]->subtype; $mails_data[$i]["attachs"][$j]["size"] = $msg_structure->parts[$j]->bytes[; ]["attachs"][$j]["name"] = get_imap_title($msg_structure->parts[$j]->parameters->waarde $mails_data[$i]["attachs"][$ j] ["file"] = structure_encoding($msg_structure->parts[$j]->encoding, imap_fetchbody($connection, $i, $f)); cp1251", $mails_data[$i]["attachs"][$j]["name"]), $mails_data[$i]["attachs"][$j]["file"] ) )

Het stuk dat verantwoordelijk is voor de verwerking van het bijgevoegde bestand is veel kleiner, en nu - waarom is dit zo? Het principe van het werken met een bestand is vergelijkbaar met het werken met de hoofdtekst van een brief, alleen beginnen we deze fase door het in de eigenschappenarray van de onderdelen te plaatsen. Vergeet niet onnodige soorten eruit te filteren door de lijst met typen te controleren. Met behulp van de eenvoudige functie file_put_contents() slaan we ons bestand op onze server op in de map tmp.

Ik wil het resultaat zien!

Tijdens het werk hebben we een array gevormd met $mails_data-gegevens, en voor visualisatie zullen we er al rechtstreeks mee werken. In dit artikel heb ik een testbrief gebruikt die in mijn mail zat, laten we eens kijken wat we uiteindelijk hebben gekregen:


Dit is ongeveer hoe je array eruit zou moeten zien. Helaas moest ik de inhoud van het bestand verbergen door persoonlijke redenen. Laten we nu verder gaan met onze HTML-opmaak:

Yandex-mail |<?php echo($mail_login);?>

Yandex Mail (Inbox) |

Aantal letters:

geen brieven
$mail):?>
Tijdstempel:
Datum:
Aan wie:
Van:
Onderwerp:
Brief in basis64:
Bijgevoegde bestanden:
$bijvoegen):?>
Type:
Grootte (in bytes):
Naam:
Lichaam:


Ik zal hier geen stijlen toevoegen, omdat ze uiteindelijk geen speciale rol spelen:


En op de server in de map tmp heb je een bestand.

Conclusie

Nadat u alle stappen uit het artikel hebt voltooid, bereikt u het gewenste resultaat, maar alles is niet zo eenvoudig als het lijkt - er zijn valkuilen waarmee rekening moet worden gehouden. Wanneer u een script voor een specifieke taak schrijft, moet u de codering in alle fasen controleren; brieven kunnen afkomstig zijn van verschillende e-mailaccounts, die elk hun eigen nuances kunnen hebben. Het is ook belangrijk om er rekening mee te houden dat Yandex-mail en hun documentatie periodiek worden bijgewerkt, zodat er verschillende subitems kunnen verschijnen voor het werken met e-mailprogramma's. Dat is alles voor mij, ik hoop dat je dit artikel nuttig vindt als je met een lagere versie van Yandex mail werkt.

Kan geen e-mail met bijlage ontvangen (
als er e-mail wordt verzonden met een bestand - welk bestand dan ook - dan verdwijnt de tekst van de brief

Help alsjeblieft

Het is duidelijk... als je e-mail van Yandex naar Yandex overzet, komt alles goed...
soort van bedacht
maar het is niet duidelijk waarom dit script naast Word geen andere bestanden accepteert... er staat een regel MSWORD ernaast, gescheiden door een komma, en zet pdf, zhpg en png - alleen Word leest en slaat normaal op.... zoiets als dit

» PHP Sendmail-script

PHPSendMail

Om het formulier te gebruiken, hoeft u alleen maar uw e-mailinstellingen in te voeren en dat is alles. Over het algemeen is het script klaar voor gebruik en is dit feedbackformulier voor een site in HTML met een PHP-processor ideaal voor kleine sites, visitekaartjesites.

| Gedownload: tijden

Eenvoudige PHP-mail verzenden

Met dit zeer EASY PHP-script kunnen bezoekers van uw website rechtstreeks e-mails naar u sturen via het feedbackformulier.

| Gedownload: tijden

PHP + AJAX-script voor het verzenden van formulieren naar e-mail

Een universeel script voor het verzenden van gegevens van formulieren naar e-mail. Het script is ideaal voor sites zoals landingspagina's, visitekaartjessites, enz.

| Gedownload: tijden

PHP Mailer Finale met captcha

Het script geeft het formulier weer en stuurt, wanneer u de verplichte velden invult, een bericht naar uw e-mail. Het script heeft ingebouwde bescherming tegen robots: voordat u de brief verzendt, moet u een captcha invoeren.

| Gedownload: tijden

GentleSource-formuliermail

U heeft twee opties waaruit u kunt kiezen: óf de gebruiker gaat via een omleiding naar de bedankpagina met uw tekst, óf de gebruiker krijgt informatie te zien dat het bericht succesvol is verzonden.

| Gedownload: tijden

Micromailer

Micro Mailer is een klein PHP-script waarmee u en uw websitebezoekers een brief naar elke ontvanger kunnen sturen.

| Gedownload: tijden

Web4you-FM

Web4you-FM Een brief versturen vanaf uw website. Kenmerken: 1 - Selecteer de ontvanger en hoeveel er zullen zijn (van 1 tot 4). 2 - Controleer of het formulier correct is ingevuld. Aan wie. Namen, alleen letters...

| v.1.0 | Gedownload: tijden

Licht PHP-contactformulier

Het script voor het versturen van mail via een feedbackformulier is zo eenvoudig dat zelfs iemand die PHP/HTML niet kent het programma zonder problemen kan gebruiken...

| Gedownload: tijden

DodosMail

DodosMail is een eenvoudig te installeren PHP-script waarmee u e-mails kunt verzenden via een feedbackformulier op uw website. Je hoeft alleen maar het php-bestand te uploaden.

| v.2.5 | Gedownload: tijden

PHP-contactformulier

Het PHP Contact Form-script bevat de volgende functies: 1) spampreventiefunctie. De gebruiker moet een beveiligingscode invoeren, ook wel captcha genoemd.

| Gedownload: tijden

TPCS-contact (e-mailformulier)

Met dit TPCS Contact-script kunnen uw bezoekers contact met u opnemen via een feedbackformulier. Alle informatie wordt u per e-mail toegestuurd.

| Gedownload: tijden

Feedbackmailer

Feedbackmailer stuurt alle informatie van het feedbackformulier op uw website rechtstreeks door naar uw e-mail. Dit kleine script verwerkt alle verzoeken zeer snel.

| v.1.2 | Gedownload: tijden

Eenvoudig PHP-contactformulier

Een eenvoudig maar veilig PHP-script om contact op te nemen met de webmaster via een feedbackformulier met codeverificatie (CAPTCHA) om spam te voorkomen.

| v.2.1 | Gedownload: tijden

PHP-contactformulier (met beeldverificatie)

Een contactformulier dat spam voorkomt door de gebruiker te vragen een beveiligingscode uit een afbeelding in te voeren. Als u een heel eenvoudig feedbackformulier gebruikt, zullen spammers vroeg of laat een manier vinden om u automatisch advertenties te sturen.

| Gedownload: tijden

CW3-formuliermail

Het script is zeer eenvoudig te installeren en aan te passen aan het uiterlijk van uw site. U kunt de grootte van het feedbackformulier en de tekst van het bericht wijzigen dat wordt weergegeven wanneer de brief succesvol is verzonden.

| v.3.30 | Gedownload: tijden

reCAPTCHA-contactformulier

Dit gratis PHP-feedbackscript maakt het veel gemakkelijker om e-mails of feedback van uw bezoekers te ontvangen. Uw bezoeker hoeft alleen maar alle benodigde contactvelden in te vullen...

| v.1.4 | Gedownload: tijden

phMailer

phMailer is een heel eenvoudig PHP-feedbackscript dat bestandsbijlagen ondersteunt dankzij de ingebouwde mail()-functie van de PHP-taal.


Iedereen die e-mail gebruikt (en dit is de meerderheid van de internetgebruikers) probeert inkomende berichten zo te plaatsen dat het gemakkelijk is om ermee te werken, zodat ze sneller en gemakkelijker kunnen vinden wat ze nodig hebben. Hiervoor worden extra mappen in de mailbox aangemaakt en worden binnenkomende brieven, afhankelijk van de gebruikte e-mailclient, op de een of andere manier gesorteerd. Meestal wordt de verwerking uitgevoerd met behulp van postadressen en mailinglijsten waarop de gebruiker is geabonneerd. U kunt sorteren op berichtonderwerp en trefwoorden. Maar dit alles gebeurt in e-mailprogramma's.

Maar het bedrijf Tweek Marketing stelt voor om een ​​soortgelijk schema te gebruiken, maar de toepassingsmogelijkheden ervan uit te breiden. In de Advanced Email Parcer (AEP)-oplossing wordt inkomende correspondentie buiten de e-mailclient verwerkt en door het gebruik van ActiveX-besturingselementen is het mogelijk om het programma te integreren met alle programma's die deze technologie ondersteunen. De integratie wordt uitgevoerd met behulp van scripttalen op basis van Microsoft Active Scripting-technologie. De meeste scripttalen kunnen worden gebruikt, inclusief JScript en VBScript.

Met dit programma kunt u enkele routinematige handelingen automatiseren. U kunt bijvoorbeeld het volgende automatiseren:

  • het verwerken van per e-mail verzonden bestelformulieren en vragenlijsten;
  • het invullen van besteldatabases;
  • het sorteren en omleiden van poststromen;
  • het samenstellen van mailinglijsten, het bijhouden van diverse statistieken;
  • creatie van automatische antwoorddiensten, e-mailrobots;
  • maak een back-up van belangrijke e-mailberichten.

Het programma kan in twee hoofdmodi werken: de intermediaire modus, wanneer AEP fungeert als tussenprocessor op de interface tussen de mailserver en de client, en de collectormodus, waarin het programma onafhankelijk verbinding maakt met de mailserver en, afhankelijk van het account instellingen, verwerkt berichten en verwijdert of laat deze op de server staan ​​(afhankelijk van uw accountinstellingen). Wanneer u verbinding maakt als tussenpersoon, wordt de e-mailclientverbinding opnieuw geconfigureerd. De nieuwe instelling is vergelijkbaar met de instelling bij het werken met spamfilters, waarbij de client geen verbinding maakt met de server, maar met de tussenliggende processor. (Ik vraag me af hoe ik in dit geval zowel de parser als het spamfilter moet installeren?)

Door AEP ontvangen berichten worden verwerkt met behulp van een lijst met regels die zijn gevormd uit filters en verwerkingscomponenten. Filters worden sequentieel uitgevoerd en bepalen of een bericht verwerkt moet worden of niet. De berichten die onder een van de regels vallen, worden in een wachtrij geplaatst, waarvan de verwerking begint nadat alle nieuwe berichten van de mailserver zijn gedownload. De resultaten van de verwerking kunnen later worden bekeken in het logboek, waarin alle gebeurtenissen worden vastgelegd.

Verwerkingscomponenten extraheren, wijzigen en slaan specifieke gegevens uit berichten op. Tijdens de verwerking is het mogelijk om gegevens in externe bestanden op te slaan, over te dragen naar andere programma's, te verwerken met behulp van scripts en te wijzigen met behulp van sjablonen. Voor het genereren van regels en componenten wordt een speciale constructor gebruikt, die ook debuggen mogelijk maakt op basis van testgegevens (deze kunnen worden gegenereerd in de vorm van een bestand of er kan worden gedebugd op inkomende berichten).

De volgorde van de regelvorming wordt gedetailleerd weergegeven op de website van de ontwikkelaar in de vorm van een online rondleiding. Het is jammer dat het niet in de documentatie is opgenomen, dan zou het veel eenvoudiger zijn om mee te werken en zou het gemakkelijker zijn om de installatie onder de knie te krijgen. Laten we echter eens kijken hoe de regels worden gevormd.

Bijvoorbeeld hoe u een mailinglijst maakt op basis van inkomende berichten. Laten we een nieuwe regel maken en deze een naam geven. Het eerste dat u hoeft te doen, is het binnenkomende bericht verwerken. We gaan ervan uit dat alleen de respondenten die een brief met een bepaalde titel hebben verzonden, in de mailinglijst worden opgenomen. Daarom moet het eerste filter worden geconfigureerd om letters met deze koptekst te selecteren. Laten we een filter (Onderwerpfilter) aan de regel toevoegen en in de eigenschappen, in het veld Bevat, het vereiste onderwerp toevoegen.

Uit de berichten die door dit filter worden geselecteerd, is het noodzakelijk om de naam en het adres van de afzender te selecteren. Hiervoor gebruiken we de samplingfunctie (Line Parcer). We voegen het toe door het simpelweg uit de boom met beschikbare functies naar de gegenereerde regel te slepen. Er zouden twee functies moeten zijn: de ene verwerkt het veld dat de naam van de afzender bevat, de tweede verwerkt het veld met zijn adres (naam afzender en e-mailadres afzender). De geselecteerde gegevens worden opgeslagen in de variabelen die u definieert. Nu moeten ze gered worden.

Gebruik de File Writer-functie om de ontvangen gegevens op te slaan. Laten we het op dezelfde manier aan de regel toevoegen als de vorige functies. Nu moet u de eigenschappen ervan configureren. Deze omvatten de naam van het bestand waarin de informatie zal worden geschreven. In de sjabloon voor het vastleggen van informatie voeren we de namen in van de variabelen die de vereiste gegevens bevatten. U moet een regel met variabelen beëindigen met een harde return, zodat de volgende invoer op een nieuwe regel begint. En kies de optie: schrijf naar een nieuw bestand of voeg toe aan een bestaand bestand. (Als het een nieuw bestand is, kunt u een voorvoegsel toewijzen om een ​​unieke bestandsnaam te vormen.)

Het enige dat overblijft is om te controleren of de regel correct is voorbereid. Om dit te doen, maakt u bestanden met testberichten en uploadt u deze naar de regel via het controlepaneel (ze verschijnen in de sectie Foutopsporingsberichten). U kunt nu het testproces uitvoeren en de resultaten bekijken in het foutopsporingslogboek. Met deze resultaten kunt u duidelijk bepalen of uw regel fouten bevat of niet. Als er geen fouten zijn, kan de regel worden gebruikt om inkomende e-mail te verwerken. Als u niet één regel heeft, maar meerdere regels, kan hetzelfde bericht door meerdere regels worden verwerkt. Om deze optie te bieden, vinkt u het item Doorgaan met volgende regel aan in de regeleigenschappen.

U kunt ook een regel maken om bijlagen te verwerken - om ze automatisch op te slaan. Inkomende verwerking wordt uitgevoerd op basis van de analyse van de berichtkop, die in het geval van bijlagen het woord multipart moet bevatten. Er is een speciale functie voor het opslaan van bijlagen op schijf: Attachments Writer. Met dit onderdeel kunt u een lijst met variabelen opgeven waarin de namen van opgeslagen bestanden worden geplaatst, evenals de map waarin ze worden opgeslagen. Om te voorkomen dat bestanden met dezelfde naam verschijnen, kunt u de datum en tijd aan de bestandsnaam toevoegen. Deze gegevens worden verzameld op het moment dat de bijlagen op schijf worden opgeslagen.

Als extra bewerking kunt u aangeven welke bestanden u wilt opslaan. Dit moeten bijvoorbeeld bestanden zijn met een bepaalde extensie. Om dit te doen, moet u de functie DeleteFile van het FileSystemObject gebruiken. Dit object wordt gemaakt en gebruikt in JScript Component-code.

U kunt ook een regel maken voor het reageren op verzoeken van respondenten. Bijvoorbeeld als ze bepaalde documentatie opvragen. Laten we bepalen dat hiervoor het onderwerp van de brief een bepaald formaat moet hebben en dat de brieven zelf naar een bepaald adres moeten worden gestuurd. Daarom selecteren we eerst brieven naar dit adres en vervolgens filteren we berichten op onderwerp. (Gebruik het e-mailfilter voor ontvangers om op adres te filteren.)

De volgende stap is het bepalen van het adres van de afzender (vergelijkbaar met het hierboven beschreven adres). Vervolgens moet u vanuit het onderwerp van het bericht de naam selecteren van het document dat de gebruiker aanvraagt. We slaan deze gegevens op in de variabelen die we definiëren. Om een ​​antwoord te sturen, gebruikt u de functie SMTP Sender (maar daarvoor moet u ook de naam van het opgevraagde document controleren op juistheid, wat u kunt doen met de functie Simple Condition).

Voor de functie SMTP-afzender geven we in de eigenschappen het onderwerp van de brief en de tekst aan die wordt verzonden. De door verweerder opgevraagde documentatie wordt als bijlage meegestuurd. Als uw gebruiker verschillende documentatie kan aanvragen, moet u, om ze allemaal te verzenden, een eigen verwerkingsfunctie creëren. Dit kunt u doen door de eerst gemaakte verwerking te kopiëren en de eigenschappen ervan aan te passen.

Geïmplementeerde voorbeelden van het gebruik van het programma werden hier gepresenteerd. Maar je kunt ook andere opties bedenken. Het programma heeft een grote verscheidenheid aan mogelijkheden en een breed scala aan functies. Hoewel het opzetten van AEP, vergeleken met het instellen van berichtbehandelaars in e-mailclients, ingewikkelder is, omdat het hier nog steeds meer gericht is op programmeurs en niet op gewone gebruikers. Maar aangezien het programma bedoeld is voor gebruik in een bedrijf, zal daar waarschijnlijk een systeembeheerder aanwezig zijn die dit systeem kan configureren.