Šajā nodarbībā es dalīšos ar skriptu, kuru izmantoju, lai sūtītu e-pastus manis izveidoto un citu lietotņu lietotājiem.
Ko mēs darīsim?
Mēs izveidosim vienkāršu Python programmu, kas rīkosies šādi:
- E-pasta noformējumam izmantojiet izveidoto veidnes failu. Šis būs tikai teksta fails ar viettura vērtībām.
- Iegūstiet personas vārdu un e-pasta adresi no cita mūsu izveidotā teksta faila.
Šie punkti padara šo programmu daudz tuvāku e-pasta ziņojumu sūtīšanai jūsu lietotnēs reālajā dzīvē. Sāksim.
Fails e-pastiem
Fails, kas satur lietotāju e-pastus, izskatīsies šādi:
Šubhems šubhems.kods @ gmail.comŠis ir tikai vienkāršs teksta fails, kurā ir lietotāja vārds un e-pasts, atdalīti ar atstarpi. Katra lietotāja dati ir ievietoti vairākos e-pastos jaunā rindā. Mēs nosaucām šo failu lietotājiem.txt.
Veidnes izmantošana
Ļaujiet mums ātri definēt arī veidni, kuru mēs izmantosim mūsu skriptā vērtību aizstāšanai:
Labdien, $ PERSON_NAME,Mēs nosūtījām šo e-pastu, izmantojot Python smtplib moduli. Forši, pareizi?
Lai jums priekšā gaiša diena!
Priekā
Mēs izmantojām veidņu virkni $ PERSON_NAME kas tiks aizstāts ar tās personas vārdu, kuru mēs saņemam no lietotājiem.txt fails, sūtot e-pastu.
Lietotāja datu iegūšana no faila
Pirmais solis, lai nosūtītu e-pastu lietotājam, ir noteikt to, kur mēs vēlamies nosūtīt e-pastus. Uzrakstīsim Python funkciju, kas pieņem faila nosaukumu un atdod mums lietotāja vārdu un e-pasta ID, kur jānosūta e-pasta ziņojumi:
def get_users_data (faila_nosaukums):lietotājvārds = []
user_email = []
ar atvērtu (faila_nosaukums, režīms = 'r', kodējums = 'utf-8') kā lietotāja_fails:
par user_info lietotāja_datumā:
lietotājvārds.pievienot (lietotāja_informācija.sadalīt () [0])
user_email.pievienot (lietotāja_informācija.sadalīt () [1])
atgriezt user_name, user_email
Izmantojot šo funkciju, mēs vienkārši atdodam lietotāja vārdus un e-pastus, kurus mēs saņemam no faila.
Veidnes objekta iegūšana
Tagad mēs varam parsēt mūsu veidni un iegūt veidnes objektu no izveidotā teksta faila:
def read_template (faila_nosaukums):ar atvērtu (faila_nosaukums, 'r', kodējums = 'utf-8') kā msg_template:
msg_template_content = msg_template.lasīt ()
atgriezt veidni (msg_template_content)
Ar šo mēs atgūsim veidnes objektu, kuru varēsim izmantot, lai parsētu faila saturu un veiktu nepieciešamos veidņu virkņu aizstājējus, piemēram, lietotāja vārdu.
Kā notiek e-pasta nosūtīšana?
Tagad, kad esam gatavi izmantot veidnes dizainu un lietotāja datus, mums jāsaprot, kā patiesībā lietotājam tiek nosūtīts e-pasts:
- Izveidojiet SMTP savienojumu ar sūtītāja konta pieteikšanās akreditācijas datiem
- Kontrolējiet daudzdaļīgu galveni ar informāciju ar laukiem No, Kam un Tēma
- Kontrolējiet ziņojuma pamattekstu, kas jānosūta
- Nosūtiet e-pastu ar SMTP savienojuma objektu
SMTP savienojuma iestatīšana
Visbeidzot definēsim funkciju, kas nosūtīs e-pastu norādītajiem lietotājiem. Šeit ir funkcija:
def main ():user_name, user_email = get_users_data ('lietotāji.txt ') # lasīt lietotāja informāciju
message_template = lasīt_template ('ziņojums.txt ')
# iestatiet SMTP serveri
smtplib_server = smtplib.SMTP (resursdators = 'smtp.gmail.com ', ports = 587)
smtplib_server.starttls ()
smtplib_server.pieteikšanās (SEND_FROM, EMAIL_PWD)
# Iegūstiet katru lietotāja informāciju un nosūtiet e-pastu:
vārdam, e-pasts pasta indeksā (lietotāja_vārds, lietotāja_pasts):
multipart_message = MIMEMultipart () # izveidojiet ziņojumu
# ziņojuma veidnei pievienojiet faktisko personas vārdu
msg = message_template.aizstājējs (PERSON_NAME = vārds.nosaukums ()
# Mūsu labad izdrukā ziņojuma pamattekstu
drukāt (msg)
# iestatiet ziņojuma parametrus
multipart_message ['From'] = SEND_FROM
multipart_message ['To'] = e-pasts
multipart_message ['Subject'] = "LinuxHint e-pasts"
# pievienot ziņojuma pamattekstā
multipart_message.pievienot (MIMEText (msg, 'plain'))
# nosūtiet ziņojumu, izmantojot iepriekš iestatīto serveri.
smtplib_server.send_message (multipart_message)
del multipart_message
# Pārtrauciet SMTP sesiju un aizveriet savienojumu
smtplib_server.atmest ()
Iepriekš minētajā funkcijā mēs izpildījām katru soli, kuru mēs norādījām iepriekšējā sadaļā. Mēs izveidojām SMTP savienojumu un izmantojām to e-pasta nosūtīšanai.
Pabeigt programmu
Pēdējā sadaļā apskatīsim visu programmu, kuru var izmantot, lai nosūtītu e-pastu norādītajam lietotājam:
importēt smtplibno virknes importēšanas veidne
no e-pasta.mīma.vairāku daļu imports
no e-pasta.mīma.teksta importēšana MIMETeksts
SEND_FROM = 'mans e-pasts-šeit'
EMAIL_PWD = 'mana parole šeit
def get_users_data (faila_nosaukums):
lietotājvārds = []
user_email = []
ar atvērtu (faila_nosaukums, režīms = 'r', kodējums = 'utf-8') kā lietotāja_fails:
par user_info lietotāja_datumā:
lietotājvārds.pievienot (lietotāja_informācija.sadalīt () [0])
user_email.pievienot (lietotāja_informācija.sadalīt () [1])
atgriezt user_name, user_email
def read_template (faila_nosaukums):
ar atvērtu (faila_nosaukums, 'r', kodējums = 'utf-8') kā msg_template:
msg_template_content = msg_template.lasīt ()
atgriezt veidni (msg_template_content)
def main ():
user_name, user_email = get_users_data ('lietotāji.txt ') # lasīt lietotāja informāciju
message_template = lasīt_template ('ziņojums.txt ')
# iestatiet SMTP serveri
smtplib_server = smtplib.SMTP (resursdators = 'smtp.gmail.com ', ports = 587)
smtplib_server.starttls ()
smtplib_server.pieteikšanās (SEND_FROM, EMAIL_PWD)
# Iegūstiet katru lietotāja informāciju un nosūtiet e-pastu:
vārdam, e-pasts pasta indeksā (lietotāja_vārds, lietotāja_pasts):
multipart_message = MIMEMultipart () # izveidojiet ziņojumu
# ziņojuma veidnei pievienojiet faktisko personas vārdu
msg = message_template.aizstājējs (PERSON_NAME = vārds.nosaukums ()
# Mūsu labad izdrukā ziņojuma pamattekstu
drukāt (msg)
# iestatiet ziņojuma parametrus
multipart_message ['From'] = SEND_FROM
multipart_message ['To'] = e-pasts
multipart_message ['Subject'] = "LinuxHint e-pasts"
# pievienot ziņojuma pamattekstā
multipart_message.pievienot (MIMEText (msg, 'plain'))
# nosūtiet ziņojumu, izmantojot iepriekš iestatīto serveri.
smtplib_server.send_message (multipart_message)
del multipart_message
# Pārtrauciet SMTP sesiju un aizveriet savienojumu
smtplib_server.atmest ()
ja __nosaukums == '__main__':
galvenais ()
Kad mēs palaidīsim šo programmu ar Gmail ID, jums var rasties šāda problēma:
Gmail SMTP kļūda
Tas ir tāpēc, ka Gmail neļauj vienkāršiem skriptiem izmantot Gmail API. Lai to izdarītu, jums, iespējams, būs jāatspējo drošības pieteikšanās savā Gmail kontā. Par to, kā to izdarīt Gmail, lasiet šeit.
Secinājums
Šajā nodarbībā mēs apskatījām, kā mēs varam nosūtīt e-pastus, izmantojot Python smtplib modulis.