E-mail-API: Komplet guide til at sende e-mail programmatisk (2026)

Lær hvordan e-mail-API'er fungerer, hvornår du skal bruge API vs. SMTP, hvordan du vælger udbyder, og hvordan du sender transaktions-, marketing- og livscyklusmails fra applikationskode.

email API
E-mail-API?

En e-mail-API lader din applikation sende e-mail via HTTP-forespørgsler.

Det lyder enkelt, men beslutningen påvirker produktpålidelighed, leveringsevne, udviklerworkflow, analytics, compliance, kundeoplevelse og supportdrift.

Den gamle version af denne side havde den rigtige disposition, men ikke nok dybde. Den sammenlignede API’er, viste et hurtigt Brevo-eksempel og forklarede, hvornår du skal bruge API vs. SMTP. Denne opdatering bevarer strukturen og udvider den til en komplet, researchet implementeringsguide med vendor-page capture samt aktuel dokumentation og prissider for Brevo, SendGrid, Mailgun, Amazon SES, Postmark og Tajos egne Messaging API-docs.

Hurtigt svar

Brug en e-mail-API, når du har brug for applikationsudløst e-mail:

  • Tilmeldingsbekræftelse.
  • Nulstilling af adgangskode.
  • Magic link-login.
  • Ordrebekræftelse.
  • Forsendelsesnotifikation.
  • Faktura eller kvittering.
  • Produktinvitation.
  • Trial-onboarding.
  • Brugsalarm.
  • Besked om fejlet betaling.
  • Fornyelsespåmindelse.
  • Livscyklusautomatisering baseret på produktevents.

Brug SMTP, når afsendersystemet kun understøtter SMTP-legitimationsoplysninger, eller når du har brug for et standardiseret mailtransportlag til en ældre app, plugin, server eller internt værktøj.

Det bedste e-mail-API-valg afhænger af stacken:

UdbyderBedst tilHovedgrund til at vælge denTjek før du beslutter dig
BrevoE-handel, CRM og livscyklusteamsTransaktionsmail kan forbindes med marketing, CRM, SMS, WhatsApp, automatisering og kundedataflowsAPI-grænser, skabelonmodel, prisniveau, eventbehov
SendGridUdviklerdrevne e-mailprogrammerModne Email API-docs, SDK-økosystem og almindelige platformintegrationerSupportniveau, leveringsevneservices, pris ved skalering
MailgunAPI-first engineering-teamsHTTP-afsendelse, logs, routing, validering og leveringsevneværktøjerFunktioner inkluderet pr. plan og supportmodel
Amazon SESAWS-tunge afsendere med høj volumenPay-as-you-go-infrastrukturmodel og AWS-integrationEngineering-ejerskab, leveringsevnedrift, supportbehov
PostmarkTransaktionsfokuserede teamsMessage streams, skabeloner, inbound processing og fokuseret transaktionsworkflowPrisniveauer, retention, adskillelse af bulk og transaktionel e-mail
TajoBrevo-forbundet produktkommunikationNyttigt når produktevents, e-handelsdata og Brevo-udløste beskeder skal bruge ét integrationslagEventskema, mappingregler og webhookdækning

Vælg ikke kun ud fra overskriftsprisen. Omkostningen ved en e-mail-API omfatter også udviklingstid, leveringsevnearbejde, datamodellering, overvågning, support og fremtidig migrationsrisiko.

E-mail-API vs. SMTP

Både API og SMTP kan sende e-mail. Forskellen er, hvordan din applikation afleverer beskeden til afsenderplatformen.

SMTP er den veletablerede mailoverførselsprotokol. Den fungerer med mange værktøjer og er stadig nyttig, når et produkt forventer indstillinger for host, port, brugernavn og adgangskode.

En e-mail-API er en HTTP-grænseflade. Din applikation sender en forespørgsel til et endpoint med autentificering, modtagere, indhold, skabelondata, metadata og nogle gange planlægning eller batchdetaljer.

KravE-mail-APISMTP
Moderne applikationsintegrationSom regel bedreVirker, men ofte mindre udtryksfuld
Support af ældre applikationerNogle gange ikke understøttetSom regel bedre
Struktureret fejlsvarStærktAfhænger af SMTP-bibliotek og serversvar
Skabeloner og variablerTypisk nativeTypisk håndteret uden for SMTP
Metadata og custom tagsTypisk nativeBegrænset eller udbyderspecifikt
Webhooks og eventdataTypisk nativeTypisk separat opsætning
BatchafsendelseTypisk indbyggetMuligt, men mindre ergonomisk
Inbound parsingUdbyderafhængigtUdbyderafhængigt
Migration mellem udbydereKræver kodeadapterSMTP-indstillinger er lettere at skifte

Den praktiske regel: hvis du ejer applikationskoden, så start med API. Hvis du konfigurerer et tredjepartsværktøj, der kun understøtter SMTP, så brug SMTP.

Sådan fungerer en e-mail-API

Et grundlæggende sendeflow har syv trin:

  1. Din applikation opretter et event, for eksempel user_signed_up eller order_paid.
  2. Applikationen vælger en beskedtype.
  3. Applikationen indlæser modtager-, afsender-, skabelon- og personaliseringsdata.
  4. Applikationen sender en autentificeret HTTP-forespørgsel til e-mailudbyderen.
  5. Udbyderen validerer forespørgslen og sætter beskeden i kø.
  6. Udbyderen returnerer et svar med succes, fejl eller besked-id’er.
  7. Webhooks rapporterer levering, bounce, klik, klage eller afmelding tilbage til dit system.

API-forespørgslen er kun én del. En pålidelig implementering kræver også idempotens, genforsøg, logging, undertrykkelseshåndtering, alarmering og data governance.

Hurtig start: Send en e-mail med Brevo API

Brevos transactional email API bruger en autentificeret forespørgsel til endpointet /v3/smtp/email. Det præcise SDK og feltnavne kan ændre sig, så brug udbyderens API-reference som sandhedskilde, når du implementerer.

Eksempel på forespørgsel:

Terminal window
curl --request POST \
--url https://api.brevo.com/v3/smtp/email \
--header 'api-key: YOUR_API_KEY' \
--header 'content-type: application/json' \
--data '{
"sender": {
"name": "Din app",
"email": "[email protected]"
},
"to": [
{
"email": "[email protected]",
"name": "Kunde"
}
],
"subject": "Velkommen til din konto",
"htmlContent": "<h1>Velkommen</h1><p>Din konto er klar.</p>"
}'

Produktionskode bør ikke hardcode API-nøgler. Gem secrets i en secret manager eller miljøvariabel, rotér dem, begræns adgang og eksponér dem aldrig i frontendkode.

Produktionsarkitektur for e-mail-API

En e-mail-API-integration i produktion bør ikke sende direkte fra hver controller eller route handler.

Brug et lille beskedlag:

  1. Produktevent sker.
  2. Applikationen skriver eventet til en kø, et job eller en eventbus.
  3. E-mailservicen mapper eventet til en skabelon.
  4. E-mailservicen validerer modtagersamtykke og undertrykkelsesregler.
  5. E-mailservicen kalder udbyderens API.
  6. E-mailservicen gemmer udbyderens message ID.
  7. Webhooks opdaterer beskedstatus senere.

Det holder produktkoden ren og gør e-mailfejl lettere at isolere.

Anbefalede interne felter:

  • event_id.
  • message_type.
  • recipient_id.
  • recipient_email.
  • template_id.
  • locale.
  • provider.
  • provider_message_id.
  • idempotency_key.
  • status.
  • error_code.
  • created_at.
  • sent_at.
  • delivered_at.

Brug idempotency keys til kritiske beskeder. Et genforsøg bør ikke sende tre nulstillingsmails, fordi en netværksforespørgsel timede ud, efter at udbyderen accepterede den første besked.

Bedste e-mail-API’er sammenlignet

Brevo

Brevo er nyttig, når transaktionsmail er en del af et bredere system til kundekommunikation.

Vælg Brevo, når:

  • Du har brug for transaktionsmail plus kampagner, CRM, automatisering, SMS eller WhatsApp.
  • E-handelsdata skal udløse livscyklusbeskeder.
  • Marketing- og produktbeskeder skal dele kontaktprofiler.
  • Ikke-udviklere skal have adgang til skabeloner og rapportering.
  • Du vil have én platform frem for separate punktværktøjer til hver kanal.

Hold øje med:

  • Forskellen mellem konfiguration af marketingmail og transaktionsmail.
  • Skabelonejerskab mellem engineering og marketing.
  • Rate limits og planbegrænsninger.
  • Hvordan kontaktdata synkroniseres.
  • Hvordan afmelding og undertrykkelsesregler gælder for forskellige beskedkategorier.

Brevos dokumentation dækker transaktionsafsendelse, batchafsendelse, sandbox mode, SMTP relay, webhooks, SDK’er og API-referencesider. Brug de docs til implementeringsdetaljer.

SendGrid

SendGrid er et almindeligt valg for teams, der vil have en moden udviklerorienteret e-mail-API med bred sprog- og platformsupport.

Vælg SendGrid, når:

  • Udviklere vil have en velkendt e-mail-API og SDK-økosystem.
  • Du har brug for transaktions- og marketingmail fra samme vendor.
  • Du har eksisterende Twilio-infrastruktur.
  • Du har brug for event webhooks og detaljerede afsenderkontroller.

Hold øje med:

  • Hvilke leveringsevne- og supportfunktioner der er inkluderet i den valgte plan.
  • Hvordan skabeloner administreres på tværs af miljøer.
  • Om marketingmail og transaktionsmail bør dele samme kontostruktur.

Mailgun

Mailgun er bygget omkring udviklerdrevet afsendelse og API-first workflows.

Vælg Mailgun, når:

  • Engineering ejer e-mailinfrastruktur.
  • Du har brug for HTTP-afsendelse, SMTP fallback, logs, inbound routes og valideringsværktøjer.
  • Du vil have en udbyder, der er eksplicit om leveringsevnedrift.

Hold øje med:

  • Hvilke validerings-, analytics- og leveringsevnefunktioner der er inkluderet.
  • Dataretention og logadgang.
  • Supportforventninger under migration og warmup.

Amazon SES

Amazon SES er infrastrukturorienteret.

Vælg Amazon SES, når:

  • Din applikation allerede kører tungt på AWS.
  • Du har engineeringressourcer til at eje mere af opsætningen.
  • Du har brug for pay-as-you-go-afsendelse med høj volumen.
  • Du vil have tæt integration med IAM, CloudWatch, SNS, Lambda eller andre AWS-services.

Hold øje med:

  • Fjernelse fra sandbox og produktionsadgang.
  • Opsætning af domæneidentitet.
  • Håndtering af bounces og klager.
  • Beslutninger om dedikeret IP.
  • Overvågning og alarmering.
  • Engineeringomkostningen ved at bygge funktioner, som andre udbydere inkluderer i produkt-UI.

SES kan være fremragende ved skalering, men det er ikke altid valget med lavest indsats.

Postmark

Postmark fokuserer på transaktionsmail.

Vælg Postmark, når:

  • Transaktionel pålidelighed og klarhed betyder mere end all-in-one-marketingbredde.
  • Du vil have message streams, der adskiller e-mailtyper.
  • Du har brug for skabeloner, inbound email og leveringshændelser i et enkelt produkt.

Hold øje med:

  • Prisniveauer ved din volumen.
  • Hvor længe du har brug for event- og beskedretention.
  • Om bulkmarketing hører hjemme i en separat stream eller platform.

Tajo

Tajo er relevant, når e-mailafsendelse er knyttet til e-handel, kundeevents og Brevo-forbundet automatisering.

Brug Tajo, når:

  • Produkt- og e-handelsevents skal flyde ind i Brevo.
  • Shopify eller andre handelsdata skal udløse forladt kurv-, ordre- eller livscyklusbeskeder.
  • Du vil have ét integrationslag til kunde-, ordre-, produkt- og eventdata.
  • Du har brug for en dokumenteret transaktionsbeskedvej forbundet til din bredere kundedatamodel.

Tajo bør ikke erstatte en udbyders egen API-reference. Det bør reducere integrationsarbejdet, der kræves for at få de rigtige kunde- og eventdata ind i beskedsystemet.

Hvornår skal du bruge en e-mail-API?

Transaktionsmails

Transaktionsmails udløses af en brugerhandling eller systemhændelse.

Eksempler:

  • Kontobekræftelse.
  • Magic link-login.
  • Nulstilling af adgangskode.
  • To-faktor-godkendelse.
  • Produktinvitation.
  • Ordrebekræftelse.
  • Betalingskvittering.
  • Forsendelsesbekræftelse.
  • Leveringsopdatering.
  • Refunderingsbesked.
  • Abonnementsfornyelse.
  • Advarsel om fejlet betaling.
  • Sikkerhedsnotifikation.

Transaktionsmail har høje forventninger til pålidelighed. Brugere opdager med det samme, hvis et loginlink, en ordrekvittering eller en nulstillingsmail ikke kommer frem.

Se også: ordrebekræftelses-e-mails og eksempler på transaktionsmails.

Produktlivscyklusmails

Livscyklusmails ligger mellem transaktion og marketing.

Eksempler:

  • Trial-onboarding.
  • Featureaktivering.
  • Brugs-milepæl.
  • Upgrade-prompt.
  • Påmindelse om inaktiv konto.
  • Customer success-check-in.
  • Fornyelsessekvens.
  • Win-back-besked.

Disse e-mails virker bedst, når de udløses af produktdata frem for en generisk kalender.

E-handelsmails

E-handelsteams har ofte brug for både transaktions- og marketingudløst e-mail:

  • Velkomsttilbud.
  • Forladt kurv.
  • Browse abandonment.
  • Tilbage på lager.
  • Prisfald.
  • Produktanbefaling.
  • Genopfyldningspåmindelse.
  • Loyalitetsopdatering.
  • Anmodning om anmeldelse.
  • VIP-forsalg.

For Shopify- og Brevo-teams kan Tajo hjælpe med at forbinde ordre-, kunde-, samtykke-, produkt- og kurvdata, så beskederne udløses af faktisk handelsadfærd.

Marketingmails via API

Behandl ikke marketingmail som kun et batch-nyhedsbrevsjob.

API-udløst marketing kan understøtte:

  • Eventbaseret segmentering.
  • Personaliserede kampagner.
  • Udløste drip-sekvenser.
  • Produktdrevet onboarding.
  • Account-based livscyklusrejser.
  • Automatiseret e-mail koblet til kundeadfærd.

Compliancekravet gælder stadig. Marketingbeskeder kræver passende samtykke, opt-out-håndtering og undertrykkelsesregler.

Vigtige API-funktioner at kigge efter

Autentificering og nøglehåndtering

En seriøs e-mail-API bør understøtte sikre API-nøgler og tydelige autentificeringsdocs.

Operationelle krav:

  • Separate nøgler pr. miljø.
  • Begrænset adgang til produktionsnøgler.
  • Rotation af nøgler.
  • Opbevaring af nøgler uden for kode.
  • Logging af nøglebrug uden at logge selve nøgleværdien.
  • Fjernelse af nøgler fra dumps af fejlede forespørgsler.

Skabeloner

Skabeloner holder transaktionsmail konsistent.

Kig efter:

  • Versionering.
  • Testudsendelser.
  • Variabler.
  • Fallbackværdier.
  • Lokalisering.
  • Rendering af previewtekst.
  • Godkendelsesflows.
  • Separate staging- og produktionsskabeloner.

Skabeloner er ikke kun designassets. Skabelonerne er en del af produktkontrakten. En skabelon til nulstilling af adgangskode, ordrebekræftelse eller faktura bør gennemgås med samme alvor som applikations-UI.

Webhooks

Webhooks gør afsendelse til et feedbackloop.

Track:

  • Processed.
  • Deferred.
  • Delivered.
  • Opened, med forsigtighed.
  • Clicked, med forsigtighed.
  • Bounced.
  • Dropped.
  • Complained.
  • Unsubscribed.

Gem udbyderens message IDs, så webhookevents kan matches til interne brugere og events.

Undertrykkelsesstyring

Undertrykkelseshåndtering beskytter leveringsevne og compliance.

Systemet bør håndtere:

  • Hard bounces.
  • Klager.
  • Afmeldinger.
  • Manuelle blokeringer.
  • Rollebaserede adresser, hvis din politik udelukker dem.
  • Ugyldige kontakter.
  • Kontosletning eller privacy requests.

Bliv aldrig ved med at genforsøge en permanent fejlet adresse, fordi produktkoden kun ser “send e-mail” som en baggrundsopgave.

Rate limits og throughput

Tjek hvordan udbyderen håndterer:

  • API-forespørgselsgrænser.
  • Besked-throughput.
  • Batch-endpoints.
  • Burst limits.
  • Daglige eller månedlige plangrænser.
  • Warmup for nye konti.
  • Warmup af dedikeret IP.

Planlæg for peaks. En produktlancering, hændelse med nulstilling af adgangskoder, Black Friday-kampagne eller sikkerhedsnotifikation kan skabe afsendelsesvolumen langt over dagsgennemsnittet.

Analytics og eksport

Minimumsrapportering:

  • Sendt.
  • Leveret.
  • Bounced.
  • Deferred.
  • Klager.
  • Afmeldinger.
  • Skabelonperformance.
  • Udbyderresponsfejl.
  • Omsætnings- eller konverteringsevents, når det er relevant.

Behandl åbninger og klik forsigtigt. Privatlivsbeskyttelse, billedblokering og botaktivitet kan forvrænge engagementmetrikker. For transaktionsmail betyder levering og vellykket brugerhandling ofte mere end åbningsrate.

Inbound parsing

Inbound e-mail betyder noget, når brugere svarer eller sender indhold ind i produktet.

Use cases:

  • Supportsvar.
  • E-mail-til-ticket.
  • Svar-til-kommentar.
  • Godkendelsesflows.
  • Videresendte kvitteringer.
  • Inbound lead capture.

Hvis inbound parsing er en del af roadmap, så vælg en udbyder med tydelige docs, routing, sikkerhedskontroller og håndtering af vedhæftede filer.

Leveringsevne med en e-mail-API

En API løser ikke automatisk leveringsevne.

Du har stadig brug for:

  • SPF.
  • DKIM.
  • DMARC.
  • Verificerede afsenderdomæner.
  • Konsistent afsenderidentitet.
  • Rene lister.
  • Bouncehåndtering.
  • Klagehåndtering.
  • Klar afmelding for marketingbeskeder.
  • Relevant indhold.
  • Rimelig afsendelsesfrekvens.
  • Overvågning.

For nye domæner eller IP’er skal du varme gradvist op. Start med lavrisiko-mails til kontakter med højt engagement, og øg volumen efterhånden som reputation stabiliserer sig.

Adskil beskedtyper, når det er muligt:

  • Autentificering og sikkerhed.
  • Kvitteringer og ordreopdateringer.
  • Produktlivscyklus.
  • Marketing.
  • Massekampagner.

Lad ikke en aggressiv kampagne skade levering af nulstilling af adgangskode eller kvitteringer.

Fejlhåndtering og genforsøg

E-mail-API-fejl bør klassificeres.

Genforsøg:

  • Timeout.
  • Midlertidig udbyderfejl.
  • Rate limit efter forsinkelse.
  • Netværksfejl.
  • Midlertidigt køproblem.

Genforsøg ikke for evigt:

  • Ugyldig modtageradresse.
  • Uautoriseret API-nøgle.
  • Ugyldigt skabelon-id.
  • Manglende påkrævet felt.
  • Undertrykt modtager.
  • Politik- eller complianceblokering.

Brug exponential backoff og en dead-letter queue til beskeder, der stadig fejler efter genforsøg.

Hver kritisk e-mail bør have en operationel vej:

  • Kan support gensende den?
  • Kan brugeren anmode om den igen?
  • Kan engineering spore eventet?
  • Kan du se udbyderens respons?
  • Kan du bevise, om den blev accepteret af udbyderen?

Tjekliste for implementering af e-mail-API

Brug denne tjekliste før lancering.

  1. Vælg beskedtyper og ejerskab.
  2. Vælg API-udbyder og fallbacktilgang.
  3. Verificér afsenderdomæner.
  4. Konfigurér SPF, DKIM og DMARC.
  5. Opret API-nøgler til staging og produktion.
  6. Gem secrets sikkert.
  7. Byg en beskedservice eller adapter.
  8. Tilføj idempotency keys.
  9. Tilføj strukturerede logs.
  10. Byg genforsøgs- og dead-letter-adfærd.
  11. Opret skabeloner.
  12. QA personalisering og fallbackværdier.
  13. Konfigurér webhooks.
  14. Gem udbyderens message IDs.
  15. Håndtér bounces, klager og afmeldinger.
  16. Byg supportværktøjer til gensendelse og statusopslag.
  17. Overvåg fejlrater og leveringsrater.
  18. Dokumentér rate limits og incident playbooks.

Scorecard til valg af udbyder

Giv hver vendor en score fra 1 til 5:

KriteriumVægtHvorfor det betyder noget
Leveringsevnekontroller5En billig API er dyr, hvis mailen ikke kommer frem
API-dokumentation5Udviklere har brug for hurtig, korrekt implementering
Webhooks5Produktteams har brug for feedback om levering og fejl
Undertrykkelseshåndtering5Beskytter compliance og afsenderreputation
Skabeloner4Reducerer drift mellem produkt og marketing
SDK’er3Gør implementering hurtigere i din stack
Prismodel4Omkostninger kan ændre sig hurtigt ved volumen
Support4E-mailincidenter rammer kunder direkte
Dataretention3Påvirker debugging og support
Inbound parsing2Kun kritisk for svarbaserede workflows
Multi-channel-fit3Nyttigt når e-mail forbindes til SMS, WhatsApp, CRM eller automatisering

For mange teams er det rigtige svar ikke “den billigste e-mail-API”. Det er udbyderen, der reducerer operationel risiko for de e-mailtyper, kunderne er afhængige af.

Almindelige fejl

Undgå:

  • At sende direkte fra spredt applikationskode.
  • At logge API-nøgler eller fulde payloads med private data.
  • At genforsøge hver fejl, som om den var midlertidig.
  • At ignorere udbyderens message IDs.
  • At glemme webhooks, indtil support spørger “kom e-mailen frem?”
  • At blande nulstilling af adgangskoder og bulkmarketing på samme reputation path.
  • At bruge én skabelon til alle locales.
  • At springe fallbackværdier for skabelonvariabler over.
  • At behandle åbninger som bevis for levering eller kundesucces.
  • At lade marketingafmelding undertrykke obligatoriske kontosikkerhedsbeskeder uden bevidst politik.
  • At sammenligne udbydere kun på gratisniveau.
  • At lancere høj volumen uden warmup.

Kom i gang

For en ny implementering skal du tage den korteste sikre vej:

  1. Start med én transaktionsbesked, for eksempel nulstilling af adgangskode eller ordrebekræftelse.
  2. Byg en udbyderadapter i stedet for at koble produktkode direkte til én vendor.
  3. Tilføj domæneautentificering.
  4. Tilføj webhook-statustracking.
  5. Tilføj synlighed for support.
  6. Tilføj skabeloner og lokalisering.
  7. Udvid til livscyklus- og e-handelsautomatiseringer.

Hvis dit team allerede bruger Brevo til marketing og CRM, så start med Brevos transactional API og map de eventdata, du har brug for. Hvis dit produkt har brug for e-handelsdata ind i Brevo, så brug Tajo til at forbinde kunde-, samtykke-, produkt-, kurv- og ordreevents, før du bygger mere livscykluskommunikation.

For SMTP-opsætning i stedet, se komplet SMTP-guide og guide til gratis SMTP-server.

Relaterede guides

Frequently Asked Questions

Hvad er en e-mail-API?
En e-mail-API er en HTTP-grænseflade, der lader en applikation sende og administrere e-mail fra kode. I stedet for at åbne en SMTP-forbindelse sender applikationen strukturerede forespørgsler til en e-mailplatform, typisk med JSON-payloads, autentificeringsheaders, skabeloner, webhooks og eventrapportering.
Skal jeg bruge en e-mail-API eller SMTP?
Brug en e-mail-API, når du styrer applikationskoden og har brug for strukturerede svar, skabeloner, metadata, event-webhooks, genforsøg eller transaktionsflows med høj volumen. Brug SMTP, når du integrerer et ældre system, WordPress-plugin, server eller værktøj, der kun understøtter SMTP-legitimationsoplysninger.
Hvilken e-mail-API er bedst?
Den bedste e-mail-API afhænger af opgaven. Brevo passer stærkt, når e-mail skal forbindes med CRM, SMS, WhatsApp og marketingautomatisering. SendGrid og Mailgun passer til udviklerdrevne afsenderteams. Amazon SES passer til AWS-tung infrastruktur med høj volumen. Postmark passer til teams, der vil have et transaktionsfokuseret produkt med tydelige message streams.

Subscribe to updates

integration

Drop your email or phone number — we'll send you what matters next.

auto-detect
Få Brevo