Aspose.Email  voor C++

Stuur een e-mail C++

Hoe gebruik je C++ en SMTP om e-mail met bijlage of iCalendar te verzenden

  Gratis proefversie downloaden

In de regel wordt het SMTP-protocol gebruikt voor het verzenden van e-mailberichten. Je hebt toegang tot een SMTP-server nodig om een bericht te kunnen verzenden. U moet het adres van de SMTP-server op het netwerk vinden, de poort en het type codering, login en autorisatiemethode bepalen. Sommige e-mailproviders vereisen ook dat u toegang tot de SMTP-server inschakelt in uw accountinstellingen. Als u het niet prettig vindt om OAuth-autorisatie in uw software te implementeren, kunt u ook proberen een apart wachtwoord voor de toepassing te maken in uw accountinstellingen.

Dus als je al het voorbereidende werk hebt gedaan, is het tijd om berichten te gaan verzenden. U kunt hiervoor de Aspose.Email voor C++-bibliotheek gebruiken. Bekijk het eenvoudigste voorbeeld:

auto smtpClient = MakeObject<SmtpClient>(u"smtp.gmail.com", u"login", u"password", SecurityOptions::SSLAuto);
smtpClient->Send(u"login@gmail.com", u"to@gmail.com", u"subject", u"body");

Gebruik deze optie als u een eenvoudige sms-e-mail wilt verzenden.

E-mails met bijlagen verzenden met C++

Als u een complex e-mailbericht moet verzenden met C ++, komt de MailMessage-klasse zeker van pas. Om bijvoorbeeld een bericht te verzenden dat lijkt op het vorige:

auto message = MakeObject<MailMessage>(u"login@gmail.com", u"to@aspose.com", u"subject", u"body");
smtpClient->Send(message);

De MailMessage-klasse is een geweldig hulpmiddel. Hiermee kunt u berichten verzenden die zijn opgeslagen in de bestandsindelingen EML en MSG (Outlook Message Format). U kunt dit formaat ook gebruiken om bijlagen of zelfs iCalendar-objecten te verzenden om de aanwezigheid in te stellen of te bevestigen. Met MailMessage kunt u uw lijst met ontvangers, Cc- en Bcc-ontvangers, verfijnen. Je kunt een e-mail sturen met HTML-opmaak. U kunt het bericht ook met verschillende vlaggen markeren voordat u het verzendt, metagegevens toevoegen, versleutelen, enz.

Waarom kiezen mensen Aspose.Email for C ++ voor het verzenden van e-mail?

Ja, Aspose.Email voor C++ is niet alleen een hulpprogramma voor het verzenden van e-mailberichten. Dit is een uitgebreide oplossing die uitgebreide ondersteuning biedt voor verschillende taken met betrekking tot het verzenden, ontvangen, opslaan en verwerken van e-mail. En je kunt er zeker van zijn dat je bij het uitvoeren van deze taken niet tegen de beperkingen van de bibliotheek aanloopt. We bestuderen dit onderwerp al vele jaren en breiden de functionaliteit ervan voortdurend uit.

Je bent waarschijnlijk kleine bibliotheken tegengekomen die relatief recent zijn verschenen. Ze lossen eenvoudig en natuurlijk een eenvoudig probleem op waarmee veel gebruikers worden geconfronteerd. Maar zodra je een stap opzij zet, realiseer je je dat als je dit eenvoudige exemplaar blijft gebruiken, je gedwongen wordt om voortdurend krukken af te schermen, sommige modules om bibliotheekbeperkingen te omzeilen, adapters die zijn ontworpen om vrienden te maken met je kleine bibliotheek met een andere kleine bibliotheek, enz. En nu is je kleine handige oplossing niet meer zo handig meer. Bovendien stuur je het naar de server, waar het zichzelf regelmatig en consequent in de voet schiet, omdat nog niemand zo’n dierentuin van krukken en integraties voor jou heeft getest. En hoe hard je ook je best doet, vroeg of laat loop je toch tegen de beperkingen van deze bibliotheek aan. En je moet op zoek gaan naar iets nieuws. Dus als het gaat om het werken met e-mail, zou je Aspose.Email voor C ++ kunnen overwegen!

We bieden u niet alleen een client om met SMTP te werken. Ten eerste is het verre van het enige protocol voor het verzenden van e-mails met C ++. Met ons product kunt u e-mails verzenden met Exchange EWS en Microsoft Graph!

We hebben je in dit artikel al verteld over de mogelijkheden van MailMessage. Maar dit is verre van het enige hulpmiddel om brieven klaar te maken voor verzending. Je kunt:

  • letters genereren op basis van een sjabloon met TemplateEngine;
  • containers met letters uitpakken, dankzij de ondersteuning van OST-, PST- en MBOX-formaten;
  • brieven downloaden uit de mailbox met ondersteuning van IMAP-, POP3-, Exchange EWS- en WebDAV-protocollen, evenals Microsoft Graph;
  • converteer e-mails van het ene formaat naar het andere.

U kunt eenvoudig een brief ontvangen met behulp van het Exchange Ews-protocol. Het zal in MAPI-formaat zijn. Maar u kunt het eenvoudig converteren naar het EML-formaat, zodat u het later via het SMTP-protocol kunt verzenden. Tegelijkertijd kunt u de lijst met ontvangers of de afzender van de brief op elk gewenst moment wijzigen.

Hoe werkt het verzenden van een e-mail via C++ en SMTP?

SMTP-configuratie

Op het moment dat u een instantie van de SmtPClient-klasse maakt, gebeurt er niets bijzonders. U geeft eenvoudig het aantal instellingen op waarmee u in de toekomst verbinding kunt maken met een SMTP-server om berichten te verzenden. Alle magie gebeurt bij de eerste oproep naar de send methode. Wat gebeurt er op dit moment?

In feite hangt het allemaal af van de instellingen die u hebt opgegeven. Laten we verschillende opties bekijken. Stel dat u de serverhost hebt gespecificeerd, maar niet de poort en het coderingstype. In dit geval wordt het mechanisme voor automatische selectie van instellingen gestart. Dit mechanisme bestaat uit opeenvolgende pogingen om verbinding te maken met de SMTP-server via standaardpoorten en de bijbehorende coderingsalgoritmen. Eerst wordt geprobeerd verbinding te maken met de server via een versleuteld kanaal. Maar als het niet lukt, zal het mechanisme proberen een niet-versleutelde verbinding tot stand te brengen. Als u de niet-versleutelde versie van het protocol niet wilt gebruiken, specificeert u de SecurityOptions.SSL_AUTO instelling. Met deze instelling kunt u ook serverinstellingen selecteren, maar worden alleen versleutelde kanalen gecontroleerd.

Als het mogelijk was om een verbinding met de server tot stand te brengen, wordt een autorisatiepoging ondernomen. Als de autorisatie mislukt, wordt de foutcode opgeslagen voor de toekomst. De matcher probeert op andere manieren verbinding te maken. Het bericht wordt verzonden als u verbinding kunt maken en kunt inloggen. Als de verbinding mislukt, ontvangt de gebruiker een autorisatiefoutcode (als deze tijdens de selectie is opgeslagen). De gebruiker zal dus kunnen begrijpen dat hij het verkeerde wachtwoord heeft ingevoerd of een andere fout heeft gemaakt. Als geen van de opties voor poorten en coderingstypen geschikt is en we niet eens bij de autorisatiepoging zijn gekomen, krijgt de gebruiker een foutmelding over onjuiste serverinstellingen.

Overigens moet worden opgemerkt dat onze SMTP-client (net als alle andere clients van onze bibliotheek) via een proxy verbinding kan maken met de SMTP-server. U kunt tijdens de initialisatie ook de instellingen van de proxyserver opgeven.

Autorisatie van de SMTP-client

SmtpClient ondersteunt meer dan alleen verschillende verbindingsmethoden. Het ondersteunt ook verschillende autorisatiemethoden. U kunt bijvoorbeeld het OAuth-mechanisme gebruiken. Om dit te doen, bieden we verschillende tools tegelijk.

Allereerst is het TokenProvider. Dit is de klasse die alle benodigde gegevens bevat om het OAuth-token op te slaan en te vernieuwen. In dat geval moet u zelf de OAuth-autorisatie uitvoeren en alle benodigde informatie opslaan die u van de OAuth-server hebt ontvangen. RefreshToken speelt hierbij een belangrijke rol. Dit is een extra token dat wordt uitgegeven door de autorisatieserver, samen met AccessToken. Hun verschil is dat AccessToken in de regel slechts voor een bepaalde periode geldig is. Terwijl RefreshToken veel langer geldig is, of zelfs voor onbepaalde tijd (totdat de gebruiker het intrekt). Dankzij RefreshToken kan de TokenProvider-klasse altijd een AccessToken verversen als deze niet langer geldig is.

Een andere optie is de iTokenProvider-interface. In dat geval kunt u het OAuth-mechanisme niet alleen zelf implementeren, maar het ook doorgeven aan de SMTPClient, zodat deze het zelf gebruikt als dat nodig is.

Opgemerkt moet worden dat het OAuth-mechanisme niet altijd noodzakelijk is. Soms is het veel makkelijker om in te loggen met een gebruikersnaam en wachtwoord. En hiervoor hoeft u uw e-mailaccount helemaal niet opnieuw te configureren, tweefactorautorisatie te weigeren, enz. Er is een veiligere oplossing: dit is een apart wachtwoord voor de applicatie. Om van deze functie gebruik te maken, moet u de instellingen van uw e-mailaccount bekijken. Hoogstwaarschijnlijk wordt het wachtwoord voor de toepassing automatisch gegenereerd wanneer u het instelt in uw account. Vergeet niet om het ergens op te slaan. We raden ook aan om tijdens de configuratie de machtigingen van je applicatie zo veel mogelijk te beperken. Als een aanvaller toegang krijgt tot dit wachtwoord, kan hij zich natuurlijk niet uw account toe-eigenen, maar hij kan nog steeds veel onaangename dingen doen. En hier kun je niets doen, want het wachtwoord is het enige dat je gegevens beschermt tegen indringers. Over het algemeen is de tool erg handig, maar verlaagt de beveiliging van uw account, gebruik deze op eigen risico.

E-mail verzenden via SMTP met C ++

De verbinding met de server is dus tot stand gebracht en de autorisatie is geslaagd. Het is tijd om brieven te sturen. Voor het verzenden wordt een object van de MailMessage-klasse gebruikt. Technisch gezien kun je gewoon alle benodigde gegevens doorgeven aan de verzendmethode. Maar in feite worden ze nog steeds verzameld in het MailMessage-object. Dankzij de mogelijkheid van de MailMessage-klasse om te serialiseren naar het EML-formaat, krijgen we bovendien de benodigde gegevensstroom die kan worden doorgegeven aan onze SMTP-server. Daarom geven we de server een opdracht om een brief te sturen en de volledige inhoud van de brief naar de server over te dragen in de vorm van tekstgegevens. Als binaire gegevens in de brief worden verzonden, bijvoorbeeld in de vorm van bijgevoegde bestanden, worden deze gegevens gecodeerd in Base64-formaat en de metagegevens van de letter geven aan dat de ontvanger deze opnieuw moet decoderen. De SMTP-server kan de juistheid van het ontvangen bericht controleren (bijvoorbeeld het FROM-veld controleren met het account van de afzender op de server) en de metagegevens van het bericht naar eigen goeddunken aanvullen. Vervolgens stuurt de server de e-mail naar de ontvangers, een lijst die hij ook uit de metagegevens van de e-mail haalt.