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:

  1. szerver konfigurálása tesztelésre (tudja, miért fontos?,)
    • Helyi SMTP szerver
    • Mailtrap hamis SMTP server
  2. a Különböző típusú e-maileket: HTML, képek, valamint a mellékletek
  3. Küldési több, személyre szabott e-mailt (Python csak felbecsülhetetlen e-mail automatizálás)
  4. 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:

  1. 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.
  2. nem fogja elárasztani a saját beérkező leveleit tesztelő e-mailekkel.
  3. 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:

  1. 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.
  2. 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:

  1. lombik, amely egyszerű felületet kínál az e-mail küldéséhez-lombik levél.
  2. 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).
  3. a Zope hasznos a weboldal fejlesztéséhez.,
  4. a csontvelő Mailer egy dedikált levelezési keretrendszer, amely különféle hasznos konfigurációkat ad hozzá.
  5. Plotly és kötőjel segíthet a levelezési grafikonok és jelentések.