mit kell küldeni egy e-mailt a Python? Néhány alapvető programozási és webes tudás, valamint az elemi Python készségek. Feltételezzük, hogy már volt egy webes alkalmazás, amelyet ezzel a nyelvvel építettek, és most ki kell terjesztenie annak funkcionalitását értesítésekkel vagy más e-mailek küldésével. Ez a bemutató végigvezeti Önt az e-mailek SMTP-kiszolgálón keresztüli küldésének legfontosabb lépésein:
- szerver konfigurálása tesztelésre (tudja, miért fontos?,)
- Helyi SMTP szerver
- Mailtrap hamis SMTP server
- a Különböző típusú e-maileket: HTML, képek, valamint a mellékletek
- Küldési több, személyre szabott e-mailt (Python csak felbecsülhetetlen e-mail automatizálás)
- Néhány népszerű e-mail küldési lehetőség, mint a Gmail vagy eseti e-mail szolgáltatások
Szolgált számos kódot példát!
Megjegyzés: Python 3.7.2-en írták és tesztelték.
e-mail küldése SMTP
az első jó hír a Python-ról az, hogy beépített modulja van az SMTP-n keresztüli e-mailek küldésére a standard könyvtárában., Nincs szükség további telepítésekre vagy trükkökre. A modult a következő kijelentéssel importálhatja:
import smtplib
annak biztosítása érdekében, hogy a modult megfelelően importálták, és megkapja az osztályok és érvek teljes leírását, írjon be egy interaktív Python munkamenetet:
help(smtplib)
a következő lépésben egy kicsit beszélünk a kiszolgálókról: a megfelelő opció kiválasztása és konfigurálása.,
SMTP szerver e-mailek tesztelésére Python
új alkalmazás létrehozásakor vagy bármilyen funkció hozzáadásakor, különösen akkor, ha először csinálja, elengedhetetlen kísérletezni egy tesztkiszolgálón. Itt van egy rövid lista az okokról:
- nem fogod megütni a barátaid és az ügyfelek postafiókjait. Ez létfontosságú, ha tömeges e-mail küldést tesztel, vagy e-mail adatbázissal dolgozik.
- nem fogja elárasztani a saját beérkező leveleit tesztelő e-mailekkel.
- a domain nem lesz feketelistára spam.,
helyi SMTP szerver
Ha a helyi környezetben szeretne dolgozni, a helyi SMTP hibakeresési kiszolgáló lehet opció. Ebből a célból a Python smtpd modult kínál. Ez egy DebuggingServer funkció, amely eldobja üzeneteket küld ki, majd nyomtassa ki őket stdout. Kompatibilis az összes operációs rendszerrel.,
állítsa az SMTP-kiszolgálót localhost: 1025
python -m smtpd -n -c DebuggingServer localhost:1025
az SMTP-kiszolgáló futtatásához a 25-ös porton root engedélyekre lesz szüksége:
sudo python -m smtpd -n -c DebuggingServer localhost:25
Ez segít ellenőrizni, hogy a kód működik-e, és rámutat a lehetséges problémákra, ha vannak ilyenek. Ez azonban nem ad lehetőséget arra, hogy ellenőrizze a HTML e-mail sablon megjelenítését.,
hamis SMTP szerver
hamis SMTP szerver utánozza a valódi 3rd party webszerver munkáját. Ebben a bejegyzésben további példákban a Mailtrap-ot fogjuk használni. Az e-mail küldés tesztelése mellett lehetővé teszi számunkra, hogy ellenőrizzük az e-mail megjelenítését, áttekintsük az üzenet nyers adatait, valamint spam-jelentést nyújtunk nekünk., Mailtrap nagyon könnyű beállítani: akkor kell csak másolja a hitelesítő által generált alkalmazás, majd illessze be őket a kódot.
így néz ki a gyakorlatban:
A Mailtrap még könnyebbé teszi a dolgokat. LÉPJEN az SMTP beállítások lap integrációk szakaszába, majd szerezze be az egyszerű üzenet használatra kész sablonját, benne a Mailtrap hitelesítő adataival., Ez a legegyszerűbb lehetőség az utasítást adó a Python script, hogy ki küldi, mit, aki a sendmail() például módszer:
Próbáld Mailtrap Ingyen
A kód elég egyértelműnek tűnik, igaz? Vessünk egy közelebbi pillantást rá, majd adjunk hozzá néhány hibakezelés (lásd a # magyarázatok között). A hibák észleléséhez a “try” és az “except” blokkokat használjuk. A kivételek listáját itt találja a dokumentációban.,
miután megkapta az elküldött eredményt a Shell-ben, látnia kell az üzenetet a postafiókjában:
HTML e-mail küldése
a legtöbb esetben esetekben hozzá kell adnia néhány formázást, linket vagy képet az e-mail értesítésekhez. Ezeket egyszerűen elhelyezhetjük a HTML tartalommal. Ebből a célból a Python rendelkezik egy e-mail csomaggal.
a MIME üzenet típusával foglalkozunk, amely képes a HTML és a sima szöveg kombinálására. A Python-ban az e-mail kezeli.mime modul.,
jobb, ha egy szöveges verziót és egy HTML verziót külön írunk, majd egyesítjük őket a MIMEMultipart (“alternatív”) példánygal. Ez azt jelenti, hogy egy ilyen üzenetnek ennek megfelelően két megjelenítési lehetősége van. Abban az esetben, ha egy HTML valamilyen okból nem lesz sikeresen megjelenítve, a szöveges verzió továbbra is elérhető lesz.
Input:
Output:
e-mailek küldése mellékletekkel Python
a következő lépés az e-mailek küldése Python-val fájlok csatolása., A mellékletek továbbra is a MIME objektumok, de azokat a base64 modullal kell kódolni. Néhány fontos pont a mellékletekről:
- a Python lehetővé teszi szöveges fájlok, képek, hangfájlok, sőt alkalmazások csatolását. Csak a megfelelő e-mail osztályt kell használnia, mint például az e-mail.mime.hang.MIMEAudio vagy e-mail.mime.kép.MIMEImage. A teljes információt lásd a Python dokumentáció ezen részében. A jobb megértés érdekében ellenőrizheti a Python által biztosított példákat is.
- emlékezzen a fájl méretére: a 20 MB-os fájlok küldése rossz gyakorlat.,
tranzakciós e-mailekben a PDF fájlok a leggyakrabban használt fájlok: általában Bevételeket, jegyeket, beszállókártyákat, megrendelési visszaigazolásokat stb. Tehát nézzük át, hogyan küldhetünk beszállókártyát PDF-fájlként.
Input:
Több fájl csatolásához hívhatja az üzenetet.csatolja () módszer többször.
hogyan lehet e-mailt küldeni a képekkel
képek, még akkor is, ha az üzenet testének részét képezik, mellékletek is., Ezek közül három típus létezik: Cid mellékletek (MIME objektumként ágyazva), base64 képek (inline embedding), valamint kapcsolt képek. Leírtuk sajátosságait, előnyök és hátrányok, valamint kompatibilitás a legtöbb e-mail ügyfelek ebben a bejegyzésben.
ugorjunk a példákra.
a CID melléklet hozzáadásához MIME többrészes üzenetet hozunk létre MIMEImage komponenssel:
kimenet:
a CID kép mind a HTML üzenet részeként, mind mellékletként jelenik meg., Az ilyen képtípusú üzeneteket gyakran spamnek tekintik: ellenőrizze a Mailtrap Analytics lapját, hogy megnézze a spam arányát és a fejlesztésre vonatkozó ajánlásokat. Sok e – mail kliens – különösen a Gmail-a legtöbb esetben nem jelenít meg CID képeket. Tehát nézzük át, hogyan kell beágyazni egy alapot64 kódolt kép.
Itt fogjuk használni base64 modul kísérlet ugyanaz a kép fájl:
Teljesítmény:
a kép ágyazva a HTML üzenetet, illetve nem elérhető, mint a csatolt fájl., A Python kódolta a jpg képünket, és ha a HTML forrás fülre megyünk, akkor az img src hosszú képadat-karakterláncát fogjuk látni.
hogyan lehet több e-mailt küldeni Python-ban
Több e-mail küldése különböző címzetteknek, és személyessé tenni őket a Python e-mailek különleges dologja.
Több további címzett hozzáadásához csak vesszővel elválasztva írhatja be a címeket, hozzáadhatja a CC-t és a BCC-t. De ha tömeges e-mail küldéssel dolgozik, a Python hurkokkal takarít meg.
az egyik lehetőség egy adatbázis létrehozása az A-ban .,csv formátum (feltételezzük, hogy ugyanabba a mappába kerül, mint a Python szkript).
gyakran látjuk nevünket tranzakciós vagy akár promóciós példákban. Itt van, hogyan tudjuk, hogy ez a Python.
rendezzük a listát egy egyszerű táblázatban, mindössze két oszloppal: név és e-mail cím. Úgy kell kinéznie, mint a következő példa:
#name,emailJohn Johnson,[email protected] Peterson,[email protected]
az alábbi kód megnyitja a fájlt, majd soronként hurok a sorok felett, a {name} helyett a “name” oszlop értékével.,
Input:
a szkript futtatása után a következő választ kapjuk:
Sent to John JohnsonSent to Peter Peterson>>>
Output
postafiókunkban két üzenetet látunk: az egyik John Johnsonnak, a másik pedig Peter Petersonnak, egyidejűleg kézbesítve:
e-mailek küldése Python segítségével Gmailen keresztül
Ha készen áll az e-mailek küldésére valódi címzetteknek, konfigurálhatja a termelési szervert. Ez az Ön igényeitől, céljaitól és preferenciáitól is függ: a localhost vagy bármely külső SMTP.,
az egyik legnépszerűbb lehetőség a Gmail, ezért nézzük meg közelebbről.
gyakran láthatunk olyan címeket, mint például: “Hogyan állítsunk be Gmail-fiókot a fejlesztéshez”. Valójában ez azt jelenti, hogy létrehoz egy új Gmail-fiókot, amelyet egy adott célra fog használni.
ahhoz, hogy e-maileket küldhessen a Gmail-fiókján keresztül, hozzáférést kell biztosítania az alkalmazásához. Engedélyezheti a kevésbé biztonságos alkalmazásokat, vagy kihasználhatja az OAuth2 engedélyezési protokollt. Ez sokkal nehezebb, de biztonsági okokból ajánlott.,
továbbá a Gmail szerver használatához tudnia kell:
- a szerver neve = smtp.gmail.com
- port = 465 az SSL / TLS kapcsolathoz (előnyös)
- vagy port = 587 a STARTTLS kapcsolathoz.
- username = your Gmail email address
- password = your password.
ha hajlamos az egyszerűségre, akkor használhatja a Yagmail-t, a dedikált Gmail/SMTP-t. Ez teszi az e-mail küldés nagyon egyszerű., Csak hasonlítsa össze a fenti példákat ezekkel a több sornyi kóddal:
tranzakciós e-mail szolgáltatások
a Gmail ingyenes és széles körben használatos, de még mindig vannak korlátozásai az e-mail küldéshez. Ha az Ön igényei messze túlmutatnak a Gmail szabályain, válasszon az egyik tranzakciós szolgáltatás opció közül, vagy ahogy ők is nevezik, e-mail API szolgáltatások.
a Python-ot a megbízható e-mail API-k túlnyomó többsége támogatja, így a beállítások és a költségvetés szerint választhat.,
Itt van néhány útmutatók e-mail küldése a Python át a listát a legnépszerűbb szolgáltatások:
- Amazon SES
- Mailgun
- Mandrill
- Bélyegző
- Sendgrid
- SocketLabs
a Következő lépéseket e-maileket a Python
azt bizonyították, csak az alapvető beállítások, e-mailek küldése a Python, hogy leírja a logic, valamint egy sor annak képességeit. Ahhoz, hogy jó eredményeket, javasoljuk, hogy vizsgálja felül a Python dokumentációt, csak kísérletezik a saját kódot!,
van egy csomó különböző Python keretrendszerek és könyvtárak, amelyek létrehozása alkalmazások elegánsabb és dedikált. Különösen néhány közülük segíthet javítani az e— mailek küldésének funkciójával kapcsolatos tapasztalatait:
a legnépszerűbb keretrendszerek a következők:
- lombik, amely egyszerű felületet kínál az e-mail küldéséhez-lombik levél.
- Django, ami lehet egy nagyszerű lehetőség az épület HTML sablonok. (Itt található a bemutatónk a Django e-mailek küldéséről).
- a Zope hasznos a weboldal fejlesztéséhez.,
- a csontvelő Mailer egy dedikált levelezési keretrendszer, amely különféle hasznos konfigurációkat ad hozzá.
- Plotly és kötőjel segíthet a levelezési grafikonok és jelentések.