Ontvanger Validatie: E-mail Verificatiecode Voorbeelden

SparkPost Ontvanger Validatie is nu beschikbaar voor zowel bestaande SparkPost-klanten als voor nieuwe, niet-zendende klanten. Het maakt gebruik van krachtige, op data gebaseerde analyses op miljarden afkezingen, afleveringen en betrokkenheid gebeurtenissen dagelijks om ons algoritme te trainen, waardoor u een van de meest krachtige, op data gebaseerde e-mailvalidatiehulpmiddelen op de markt krijgt, zodat u slimmer e-mails kunt verzenden.

Auteur

Bird

Categorie

E-mail

Ontvanger Validatie: E-mail Verificatiecode Voorbeelden

SparkPost Ontvanger Validatie is nu beschikbaar voor zowel bestaande SparkPost-klanten als voor nieuwe, niet-zendende klanten. Het maakt gebruik van krachtige, op data gebaseerde analyses op miljarden afkezingen, afleveringen en betrokkenheid gebeurtenissen dagelijks om ons algoritme te trainen, waardoor u een van de meest krachtige, op data gebaseerde e-mailvalidatiehulpmiddelen op de markt krijgt, zodat u slimmer e-mails kunt verzenden.

Auteur

Bird

Categorie

E-mail

Ontvanger Validatie: E-mail Verificatiecode Voorbeelden

SparkPost Ontvanger Validatie is nu beschikbaar voor zowel bestaande SparkPost-klanten als voor nieuwe, niet-zendende klanten. Het maakt gebruik van krachtige, op data gebaseerde analyses op miljarden afkezingen, afleveringen en betrokkenheid gebeurtenissen dagelijks om ons algoritme te trainen, waardoor u een van de meest krachtige, op data gebaseerde e-mailvalidatiehulpmiddelen op de markt krijgt, zodat u slimmer e-mails kunt verzenden.

Auteur

Bird

Categorie

E-mail

SparkPost Ontvanger Validatie is nu beschikbaar zowel voor bestaande SparkPost-klanten als voor nieuwe klanten die niet verzenden. Het maakt gebruik van krachtige data-analyse op miljarden dagelijkse bounce-, leverings- en betrokkenheidsevenementen om ons algoritme te trainen, waardoor je een van de krachtigste data-gestuurde e-mailvalidatietools op de markt hebt, zodat je slimmer e-mails kunt versturen.

Dit artikel legt uit hoe je het meeste uit de gegevens kunt halen die je terugkrijgt over elke gevalideerde ontvanger - je zult zien dat we adressen categoriseren als “geldig”, “risicovol”, “neutraal”, “onbezorgbaar” en “typefout”. We geven je een “reden” code en ook een “did_you_mean” voor bekende typefouten in adressen.


API verzoeken

In de SparkPost-webapp kun je een volledige lijst slepen en neerzetten voor validatie. Je kunt ook de API gebruiken om enkele adressen te valideren, zodat je validatie direct in je adres-invoerworkflow kunt integreren.

Een tijdje geleden hebben we een Python command-linetool bedacht met behulp van deze API. We bespraken wat we moesten doen voor andere talen - en hier zijn we! Laten we beginnen.

Deze GitHub repository map bevat werkende voorbeelden van API-oproepen voor Ontvanger Validatie in ongeveer een dozijn verschillende talen. We proberen de meest populaire toepasbare talen te dekken.

De gebruikelijke manier om door al deze voorbeelden te werken is:

  • Haal je sleutel op uit de omgevingsvariabele SPARKPOST_API_KEY

  • Maak een API-oproep naar /api/v1/recipient-validation/single/ om een ontvanger te valideren

  • Ontvang een responsstring terug, met JSON-geformatteerde gegevens met het resultaat

  • Print het resultaat

SparkPost heeft bibliotheken voor sommige, maar niet alle talen die hier worden behandeld. We kozen ervoor om deze voorbeelden in “native” te schrijven, zodat we a) meer talen konden dekken, b) konden laten zien hoe eenvoudig de onderliggende code kan zijn, en c) je duidelijk de overeenkomsten en verschillen tussen talen kon laten zien.


Bash / Curl

Dit wint de prijs voor de kortste code - het gebruikt eenvoudigweg het command-linetool “curl” om het verzoek te doen en de reactie direct naar de terminal te printen. Je kunt zien dat de output een string is, die JSON bevat; we parseren de individuele resultaatsattributen niet.


PHP

Betrouwbare PHP heeft enkele verschillende manieren om HTTPS API-oproepen te doen. Hier kozen we ervoor om curl_setopt en curl_exec te gebruiken. (https://www.php.net/manual/en/function.curl-exec.php)

Als je de voorkeur geeft aan HTTP_Request2 of pecl_http, dan heeft Postman een ingebouwde codegenerator die je kunt gebruiken om vergelijkbare voorbeelden te maken - stel gewoon een werkend GET-verzoek in en gebruik de “Code” knop.


Python

Dit maakt gebruik van de populaire requests module, die hoog niveau is en daarom gemakkelijk te gebruiken. Dit voorbeeld controleert de geretourneerde statuscode, converteert de resultaten JSON terug naar een Python woordenboekobject, en print het resulterende object in plaats van alleen een string.

Als je de voorkeur geeft aan de ingebouwde http.client bibliotheek, kan Postman daar ook code voor genereren; het is niet veel langer.


Node.js

Er zijn veel verschillende node.js HTTP(S) bibliotheken. Ik begon met het oudere request pakket (met gebruik van een callback functie) maar het is verouderd en wordt niet langer actief onderhouden. Ik koos het nieuwere axios pakket (met gebruik van promises).

Postman kan je ook een voorbeeld in native JavaScript geven en Unirest, als je die liever hebt.

Omdat deze code toegang nodig heeft tot je API-sleutel, raden we sterk aan om onze API van je serverzijde aan te roepen, nooit van de clientzijde (browser / mobiel apparaat).


Go

Go streeft naar een filosofie van “één goede manier” om iets te doen; in dit geval met behulp van de ingebouwde “batterijen inbegrepen” bibliotheken net/http, encoding/json en anderen.

De lengte komt vooral door de expliciete foutcontrole clauses if err != nil {} overal (geen uitzonderingen LOL).

We declareren ook de structuur van het resultaatobject met veldtags, om ons in staat te stellen de geretourneerde JSON te “unmarshallen”. We leggen de “results” en “errors” tags over om beide soorten retouren mogelijk te maken.

Ik hou van de snelheid, type-veiligheid en duidelijkheid van Go, zelfs als de code langer is dan onze vorige voorbeelden.


C#

Ik ben minder bekend met C# – voor mij lijkt het meer op Java, in plaats van op C. Ik was in staat om dit samen te stellen door de voorbeelden te volgen die in de request librarySystem.Net.Http worden getoond.

Postman kan automatisch voorbeeldcode genereren met RestSharp, als je dat wilt.


Ruby

Dit was mijn eerste poging tot Ruby-code; ik gebruikte de Net::http bibliotheek, en volgde dit voorbeeld (dat heel dicht bij de code blijkt te zijn die Postman automatisch genereert).

Ik kwam een typische eigenaardigheid van de taal / bibliotheek tegen die het uitleggen waard is. Alleen het instellen met een URI die begint met “https://” is niet genoeg, je moet specifiek http.use_ssl = true instellen.

Zonder dit zal je code proberen een verzoek te doen op poort 443 - maar zonder gebruik van SSL/TLS (d.w.z. plaintext), en SparkPost zal terecht weigeren het verzoek goed te keuren. Probeer dit niet thuis, aangezien je API-sleutel in de Authorization-headers is. Deze taal/bibliotheeksfeature voelde onveilig voor mij aan.


Java

Ik heb nog nooit serieuze Java geschreven, maar het was eenvoudig om dit samen te stellen door de algemene aanpak te volgen die wordt gebruikt in de SparkPost-bibliotheek voor andere GET-verzoeken.

Overigens werkte Visual Studio Code als mijn editor/debugger heel goed voor alle hier beschreven talen, het gaf me syntaxis markering, debugger stap-over / bekijken van variabelen, enz. De InputStreamReader en BufferedReader-constructies zijn vergelijkbaar met (en ik neem aan dat ze zijn gekopieerd door) Go.


C / C++

Dit was een trip down memory lane, aangezien ik in de jaren 1990 veel C-code schreef, waarvan sommige nog diep in telecommunicatienetwerken ergens draaien. Aangezien de geschiedenis van C voorafgaat aan het moderne web, is het niet verrassend dat bibliotheekondersteuning een handmatige taak is. We moeten een recente versie van Libcurl downloaden (en compileren) en linken aan een OpenSSL-bibliotheek – zie deREADME voor de werkelijke stappen.

Dit voelt als veel werk in vergelijking met moderne talen, vooral als Go (of Lua, of Python, of een van de anderen) snel genoeg is voor dergelijke taken.

Het andere dat ik me had vergeten, ondanks dat ik de littekens draag van vorige veldslagen, is hoe eng geheugenallocatie kan zijn! Om het voorbeeld eenvoudig te houden, heb ik de URL string-lengte geprealloceerd als 1024 tekens, en de lengte van het e-mailadres gecontroleerd (met strlen) voordat we het concatenateren (met strcat).

We behandelen de Authorisatiestring met een gecopiëerd API-sleutel op dezelfde manier... zelfs als we weten dat een geldige API-sleutel nooit te lang zal zijn... dat is geen bescherming! Gebruikersinvoer vanuit een omgevingsvariabele kan van alles zijn. Je moet defensief programmeren.

Een meer geavanceerde ontwikkelaar zou malloc in plaats van stapelvariabele toewijzing kunnen gebruiken, en precies berekenen hoe lang de samengevoegde strings moeten zijn. Het nadenken over deze extra complexiteit gaf me een pijn in de diodes aan mijn linkerkant; het herinnerde me aan de risico's waarmee C-programmeurs dagelijks worden geconfronteerd bij het vermijden van buffer overrunen en onverwachte bijwerkingen. Wat ons naar ..


Lua

Lua staat bekend om zijn gemakkelijke co-existentie naast een lichaam van C-code, en hier bij SparkPost, gebruikten we Lua uitgebreid voor Beleidsaanpassingen binnen onze Momentum on-premises MTA. Je kunt het ook als stand-alone scripttaal gebruiken, en het is daar ook behoorlijk goed voor.

Met Lua 5.3 en de luarocks pakketmanager gebruiken we bibliotheken luasocket en luasec. Gezien zijn C-integratie erfgoed, linken we naar onze lokale OpenSSL-bibliotheek. Het luarocks installatieproces roept de gcc-compiler aan (of welke C-compiler je ook gebruikt), dus het toevoegen van nieuwe bibliotheken duurt even.

De Lua-code is vrij eenvoudig. De karakters — markeren opmerkingen. De functie https.request biedt meerdere retourwaarden (een beetje zoals Python en Go). String concatenatie wordt gedaan met de operator .. (in plaats van + in Python).

De reactie body van deze oproep wordt afgehandeld met het “ltn12” module – zie hier. Dat maakt efficiënte verwerking van gegevens mogelijk die in meerdere “chunks” kunnen worden geretourneerd. Zoals dat artikel uitlegt:

De tafel factor creëert een sink die alle verkregen gegevens in een tabel opslaat. De gegevens kunnen later efficiënt worden samengevoegd tot een enkele string met de table.concat-bibliotheekfunctie.

In ons voorbeeld voegen we tabel t samen en printen het; je zou een filter kunnen gebruiken om meer verwerking te doen.


Perl

Terwijl Perl beroemd is om zijn one-liners, is dit er niet een van hen. Perl is ontworpen voor zeer snelle documentzoekopdracht en -modificatie, maar is eigenlijk tot veel meer in staat. Ik heb ooit een volledig Inventarisbeheer suite in Perl geschreven. Ga dat maar eens na. E n i g z i n s…

Dit script maakt gebruik van LWP::UserAgent en HTTP::Request en optioneel de JSON en Data::Dumper pakketten, afhankelijk van hoe je de output wilt zien. Net als bij alle andere scripts op deze pagina, moet je vooraf een omgevingsvariabele SPARKPOST_API_KEY instellen op je gegenereerde API-sleutel die de functie Ontvanger Validatie bevat. Dit script hardcodeert $recipient = ‘test@gmail.com’ maar je kunt eenvoudig command-line input toevoegen of consumeren vanuit een bestand.

Nadat alle variabelen zijn geladen, laden we een HTTP:Request met GET-parameters en sturen het naar de LWP:UserAgent. Het resulterende “bericht” is het resultaat van de e-mailvalidatietest als een array. Je kunt JSON en DUMPER gebruiken om het resultaat te weergeven of gewoon de array doorgeven voor verdere verwerking.


VB.net

Visual Basic is niet visueel en het is niet basaal (IMHO), maar het staat op #6 op de TIOBE taalindex dus hier gaan we.

Er zijn andere manieren om dit te doen, maar de gemakkelijkste manier om succes te boeken is om de Visual Studio SDK in een Windows-platform te gebruiken. Start Visual Studio, start een nieuw project en selecteer Visual Basic, selecteer daarna console.app. Zorg ervoor dat je de VB-versie gebruikt, niet de C#-versie - het is gemakkelijk om dat in de SDK te missen.


Op dit punt kun je regels handmatig bewerken of de code van hier kopiëren/plakken in VS om veel tijd te besparen. Om deze code te laten werken, moet je een Windows-omgevingsvariabele toevoegen. De gemakkelijkste manier om dit te doen is door een opdrachtprompt te openen en setx.exe te gebruiken zoals dit:

C:\Users\me>setx SPARKPOST_API_KEY "142<geanonimiseerd<geanonimiseerd>c531c3"

In Windows 10 wordt dit toegepast op je gebruikersomgeving, maar het is niet onmiddellijk beschikbaar in de huidige opdrachten sessie, dus het testen ervan met een “set” zal niet werken, maar het zal beschikbaar zijn voor de code. Als je de code bouwt en uitvoert die in de repo is opgenomen, zie je het validatieresultaat.


Rust

Rust is een taal voor systeem- en webservices-programmering die zich focust op prestatie, veiligheid en gelijktijdigheid. Zoals Wikipedia zegt, is Rust sinds 2016 de “meest geliefde programmeertaal” in de Stack Overflow Developer Survey.

De Rust code in onze Github repo gebruikt de reqwest bibliotheek met tokio async, vergelijkbaar met dit voorbeeld uit het Rust kookboek. (Dat is geen typefout, de reqwest bibliotheeknaam is op die manier gespeld). We hebben een cargo pakketbeheerder configuratiebestand opgenomen, zodat je kunt bouwen en uitvoeren met:

cd rust_recipient_validation cargo run

Dit zal het pakket compileren naar uitvoerbare code, en het uitvoeren:

Afgewerkte dev [niet-geoptimaliseerd + foutopsporingsinfo] doel(en) in 0.10s Uitvoerende `target/debug/rust_recipient_validation` Status: 200 OK Lichaam: : (enz.)

De code gebruikt std:env om de SPARKPOST_API_KEY omgevingsvariabele te lezen. Een match-clausule behandelt het geval waarin de sleutel niet is gedefinieerd. Als alles in orde is, wordt een nieuwe reqwest::Client gemaakt en een async-oproep uitgegeven, gevolgd door een .await? (zie hier). Async, in plaats van de eenvoudigere blokkerende oproep, lijkt nodig te zijn om request-headers in te stellen. Respons body-tekst wordt gelezen met een tweede .await?, zoals in dit voorbeeld.


Samenvatting

In dit artikel hebben we voorbeelden van Ontvanger Validatie-code in veel talen doorgenomen. Hier is ons verzoek aan jou.

Laat ons weten als je denkt dat we jouw favoriete taal hebben gemist. We hebben misschien niet zo veel voorbeelden als Het Fibonacci Project, maar we voegen er graag meer toe. Ook, als je denkt dat onze voorbeelden kunnen worden verbeterd, laat het ons weten!

Sign up

Het door AI aangedreven platform voor Marketing, Ondersteuning en Financiën

Door op "Vraag een demo aan" te klikken, stemt u in met de voorwaarden van Bird's

Sign up

Het door AI aangedreven platform voor Marketing, Ondersteuning en Financiën

Door op "Vraag een demo aan" te klikken, stemt u in met de voorwaarden van Bird's

Sign up

Het door AI aangedreven platform voor Marketing, Ondersteuning en Financiën

Door op "Vraag een demo aan" te klikken, stemt u in met de voorwaarden van Bird's

Channels

Grow

Engage

Automate

APIs

Resources

Company

Socials

Groeien

Beheren

Automatiseer

Groeien

Beheren

Automatiseer