Python

E-pasta sūtīšana Python

E-pasta sūtīšana Python
E-pasta sūtīšana ir viens no visizplatītākajiem uzdevumiem, kas man jāveic tīmekļa lietojumprogrammās un citos projektos, kurus izveidoju. Izmantojot Python, tas ir diezgan vienkārši un viegli izdarāms. Pat ja mums jāizmanto dažas iepriekš definētas veidnes, Python palīdz mums aizstāt viettura vērtības ar faktiskajiem datiem, lai galīgais e-pasts izskatās elegants un piepildīts ar detaļām, kas manu klientu priecē.

Š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:

Š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:

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 smtplib
no 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.

Populārākās Oculus App Lab spēles
Ja esat Oculus austiņu īpašnieks, jums ir jāsazinās par sānu ielādi. Sānu ielāde ir process, kurā austiņās tiek instalēts saturs, kas nav veikals. Sid...
10 labākās spēles, kuras spēlēt Ubuntu
Windows platforma ir bijusi viena no dominējošajām spēļu platformām, jo ​​mūsdienās tiek attīstīts milzīgs spēļu skaits, lai atbalstītu Windows. Vai k...
5 labākās arkādes spēles Linux
Mūsdienās datori ir nopietnas mašīnas, kuras izmanto spēlēšanai. Ja jūs nevarat iegūt jauno augsto rezultātu, jūs zināt, ko es domāju. Šajā ierakstā j...