E-mail küldése C++
A C ++ és az SMTP használata e-mailek küldéséhez melléklettel vagy iCalendar
Letöltés ingyenes próbaverzióÁltalános szabály, hogy az SMTP protokollt e-mail üzenetek küldésére használják. Az üzenet elküldéséhez hozzáférésre van szüksége egy SMTP-kiszolgálóhoz. Meg kell találnia az SMTP-kiszolgáló címét a hálózaton, meg kell határoznia a titkosítás portját és típusát, a bejelentkezés és az engedélyezési módot. Egyes e-mail szolgáltatók azt is megkövetelik, hogy engedélyezze az SMTP-kiszolgálóhoz való hozzáférést a fiókbeállításokban. Továbbá, ha nem kényelmes az OAuth engedélyezés végrehajtása a szoftverben, megpróbálhat külön jelszót létrehozni az alkalmazáshoz a fiókbeállításokban.
Tehát, ha elvégezte az összes előkészítő munkát, ideje elkezdeni az üzenetek küldését. Ehhez használhatja az Aspose.Email for C ++ könyvtárat. Tekintsük a legegyszerűbb példát:
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");
Használja ezt a lehetőséget, ha egyszerű szöveges e-mailt szeretne küldeni.
E-mail küldése mellékletekkel a C ++ használatával
Ha komplex e-mail üzenetet kell küldenie C++ használatával, akkor a MailMessage osztály biztosan hasznos lesz. Például az előzőhöz hasonló üzenet küldéséhez:
auto message = MakeObject<MailMessage>(u"login@gmail.com", u"to@aspose.com", u"subject", u"body");
smtpClient->Send(message);
A MailMessage osztály nagyszerű eszköz. Lehetővé teszi az EML és MSG (Outlook Message Format) fájlformátumban tárolt üzenetek küldését. Ezzel a formátumot mellékleteket vagy akár iCalendar objektumokat is küldhet a jelenlét beállításához vagy megerősítéséhez. A MailMessage lehetővé teszi a címzettek, a Cc és a Bcc címzettek listájának finomhangolását. Küldhet e-mailt HTML-jelöléssel. Az üzenetet különféle zászlókkal is megjelölheti, mielőtt elküldi, metaadatokat adhat hozzá, titkosíthatja stb.
Miért választják az emberek az Aspose.Email for C ++ alkalmazást az e-mail küldéséhez?
Igen, az Aspose.Email for C ++ nem csak egy segédprogram az e-mail üzenetek küldéséhez. Ez egy átfogó megoldás, amely átfogó támogatást nyújt az e-mailek küldésével, fogadásával, tárolásával és feldolgozásával kapcsolatos különféle feladatokhoz. És biztos lehet benne, hogy ezeknek a feladatoknak a végrehajtásakor nem fog találkozni a könyvtár korlátaival. Évek óta tanulmányozjuk ezt a témát, és folyamatosan bővítjük funkcionalitását.
Valószínűleg olyan kis könyvtárakkal találkozott, amelyek viszonylag nemrégiben jelentek meg. Könnyen és természetesen megoldják egy egyszerű problémát, amellyel sok felhasználó szembesül. De amint félreteszel egy kicsit, rájössz, hogy ha továbbra is ezt az igénytelen használatot folytatod, kénytelen leszel állandóan keríteni a mankókat, néhány modult a könyvtári korlátozások megkerülésére, adaptereket, melyeket arra terveztek, hogy barátkozzon a kis könyvtárral egy másik kis könyvtárral stb. És most a kis finom megoldásod már nem annyira remek. Ráadásul elküldi a szerverre, ahol rendszeresen és következetesen lábba lövi magát, mert senki sem tesztelt ilyen mankók és integrációk állatkertjét előtted. És bármennyire is próbálkozol, előbb-utóbb mégis összeütközsz ennek a könyvtárnak a korlátaival. És valami újat kell keresned. Tehát, amikor az e-mailekkel dolgozunk, érdemes fontolóra venni az Aspose.Email for C ++ alkalmazást!
Nemcsak egy klienst kínálunk az SMTP-vel való munkavégzéshez. Először is, ez messze nem az egyetlen protokoll az e-mailek C ++ formátumú küldésére. Termékünkkel e-maileket küldhet az Exchange EWS és a Microsoft Graph segítségével!
Ebben a cikkben már elmondtuk a MailMessage lehetőségeit. De ez messze nem az egyetlen eszköz a levelek küldésére való előkészítéséhez. Megteheti:
- betűket generál egy sablonból a TemplateEngine használatával;
- csomagolja ki a betűkkel ellátott konténereket az OST, PST és MBOX formátumok támogatásának köszönhetően;
- levelek letöltése a postaládából az IMAP, POP3, Exchange EWS és WebDAV protokollok, valamint a Microsoft Graph támogatásával;
- konvertálja az e-maileket egyik formátumból a másikba.
Az Exchange Ews protokoll segítségével könnyen kaphat levelet. MAPI formátumban lesz. De könnyen konvertálhatja EML formátumba, amely lehetővé teszi, hogy később SMTP protokollon keresztül küldje el. Ugyanakkor bármikor megváltoztathatja a címzettek listáját vagy a levél feladóját.
Hogyan működik az e-mail küldése C++ és SMTP használatával?
SMTP konfiguráció
Abban a pillanatban, amikor létrehozza az SMTPClient osztály példányát, semmi különös nem történik. Egyszerűen adja meg azon beállítások számát, amelyek lehetővé teszik, hogy a jövőben csatlakozzon egy SMTP-kiszolgálóhoz az üzenetek küldéséhez. Minden varázslat az első híváskor történik send
módszer. Mi történik ebben a pillanatban?
Valójában minden attól függ, hogy milyen beállításokat adott meg. Tekintsük meg több lehetőséget. Tegyük fel, hogy megadta a kiszolgáló gazdáját, de nem adta meg a portot és a titkosítási típust. Ebben az esetben elindul a beállítások automatikus kiválasztásának mechanizmusa. Ez a mechanizmus az SMTP-kiszolgálóhoz való csatlakozás egymást követő kísérletekből áll, szabványos portok és a megfelelő titkosítási algoritmusok segítségével. Először megpróbálják titkosított csatornán keresztül csatlakozni a kiszolgálóhoz. De ha nem sikerül, a mechanizmus megpróbál titkosítatlan kapcsolatot létrehozni. Ha nem szeretné használni a protokoll nem titkosított változatát, adja meg a SecurityOptions.SSL_AUTO
beállítás. Ez a beállítás lehetővé teszi a kiszolgáló beállításainak kiválasztását is, de csak a titkosított csatornákat ellenőrzi.
Ha sikerült kapcsolatot létesíteni a szerverrel, akkor engedélyezési kísérletet végeznek. Ha az engedélyezés sikertelen, a hibakód a jövőre mentésre kerül. A mérkőző más módon próbál kapcsolatba lépni. Az üzenet akkor kerül elküldésre, ha csatlakozhat és bejelentkezhet. Ha a kapcsolat sikertelen, a felhasználó engedélyezési hibakódot kap (ha a kiválasztás során mentett egyet). Így a felhasználó képes lesz megérteni, hogy rossz jelszót adott meg, vagy más hibát követett el. Ha a portok és a titkosítási típusok egyike sem felel meg, és még az engedélyezési kísérletbe sem jutottunk el, a felhasználó hibás kiszolgálóbeállításokról értesítést kap.
Egyébként meg kell jegyezni, hogy SMTPCliens (mint a könyvtárunk összes többi kliense) egy proxyn keresztül csatlakozhat az SMTP-kiszolgálóhoz. A proxykiszolgáló beállításait is megadhatja az inicializálás során.
SMTP kliens engedélyezés
Az SMTPClient nem csupán különböző csatlakozási módszereket támogat. Különböző engedélyezési módszereket is támogat. Használhatja például az OAuth mechanizmust. Ehhez egyszerre több eszközt biztosítunk.
Először is, ez a TokenProvider. Ez az osztály tartalmazza az összes szükséges adatot az OAuth token tárolásához és frissítéséhez. Ebben az esetben magának kell végrehajtania az OAuth engedélyezést, és el kell mentenie az OAuth szervertől kapott összes szükséges információt. A RefreshToken kulcsszerepet játszik itt. Ez egy további token, amelyet az engedélyezési szerver adott ki, az AccessToKen mellett. Különbségük az, hogy az AccessToken általában csak egy bizonyos ideig érvényes. Míg a RefreshToken sokkal hosszabb ideig, vagy akár határozatlan ideig érvényes (amíg a felhasználó visszavonja). A RefreshToken-nek köszönhetően a TokenProvider osztály mindig frissítheti az AccessToken-t, ha ez utóbbi már nem érvényes.
Egy másik lehetőség az iTokenProvider felület. Ebben az esetben nemcsak saját maga valósíthatja meg az OAuth mechanizmust, hanem átadhatja azt az SMTPClientnek is, hogy szükség szerint maga használja.
Meg kell jegyezni, hogy az OAuth mechanizmus nem mindig szükséges. Néha sokkal könnyebb bejelentkezni felhasználónévvel és jelszóval. Ehhez egyáltalán nem kell újrakonfigurálnia e-mail fiókját, megtagadnia a kétfaktoros engedélyezést stb. Van egy biztonságosabb megoldás - ez egy külön jelszó az alkalmazáshoz. Ennek a funkciónak a kihasználásához nézze meg az e-mail fiók beállításait. Valószínűleg az alkalmazás jelszavát automatikusan generálják, amikor beállítja azt a fiókjában. Ne felejtsd el elmenteni valahova. Azt is javasoljuk, hogy a konfiguráció során a lehető legnagyobb mértékben korlátozza az alkalmazás engedélyeit. Természetesen, ha egy támadó hozzáférést kap ehhez a jelszóhoz, akkor nem fogja tudni alkalmazni a fiókját, de még mindig sok kellemetlen dolgot tehet meg. És itt nem tehet semmit, mert a jelszó az egyetlen dolog, amely megvédi adatait a betolakodóktól. Általánosságban elmondható, hogy az eszköz nagyon kényelmes, de csökkenti a fiók biztonságát, használja saját felelősségére.
E-mailek küldése SMTP-n keresztül C ++
Tehát létrejött a kapcsolat a szerverrel, és az engedélyezés sikeres volt. Ideje leveleket küldeni. A küldéshez a MailMessage osztály objektumát használjuk. Technikailag csak átadhatja az összes szükséges adatot a küldési módszernek. De valójában továbbra is összegyűjtik őket a MailMessage objektumban. Továbbá, annak köszönhetően, hogy a MailMessage osztály képes EML formátumra sorozatozni, megkapjuk a szükséges adatfolyamot, amely továbbítható az SMTP szerverünkre. Így parancsot adunk a szervernek, hogy levelet küldjön, és a levél összes tartalmát szöveges adatok formájában továbbítsa rá. Ha a bináris adatokat a levélben továbbítják, például csatolt fájlok formájában, akkor ezeket az adatokat Base64 formátumban kódolják, és a levél metaadatai azt jelzik, hogy a címzettnek vissza kell dekódolnia. Az SMTP-kiszolgáló ellenőrizheti a fogadott üzenet helyességét (például ellenőrizheti a FROM mezőt a feladó fiókjával a kiszolgálón), valamint saját belátása szerint kiegészítheti az üzenet metaadatait. Ezután a szerver elküldi az e-mailt a címzetteknek, amelyek listáját az e-mail metaadataiból is megkapja.