„Python“

El. Pašto siuntimas „Python“

El. Pašto siuntimas „Python“
Laiško siuntimas yra viena iš dažniausiai pasitaikančių užduočių, kurias turiu atlikti žiniatinklio programose ir kituose kurtuose projektuose. Naudojant „Python“ tai yra gana paprasta ir lengva padaryti. Net kai mums reikia pasinaudoti tam tikrais iš anksto nustatytais šablonais, „Python“ padeda pakeisti vietos rezervavimo ženklų reikšmes faktiniais duomenimis, kad galutinis el.

Šioje pamokoje pasidalinsiu scenarijumi, kurį naudoju siunčiant el. Laiškus savo kuriamų programų vartotojams ir dar daugiau.

Ką mes darysime?

Sukursime paprastą „Python“ programą, kuri atliks šiuos veiksmus:

Šie punktai daro šią programą daug arčiau realaus el. Laiškų siuntimo jūsų programose. Pradėkime.

Failas el. Laiškams

Failas, kuriame yra vartotojų el. Laiškai, atrodys taip:

Shubham shubham.kodas @ gmail.com

Tai tik paprastas tekstinis failas, kuriame yra vartotojo vardas ir el. Paštas, atskirti tarpu. Keli el. Laiškai buvo įdėti į kiekvieno vartotojo duomenis naujoje eilutėje. Pavadinome šį failą vartotojų.txt.

Šablono naudojimas

Greitai apibrėžkime šabloną, kurį naudosime scenarijuje pakeisdami vertes:

Sveiki, $ PERSON_NAME,
Šį el. Laišką išsiuntėme naudodami „Python smtplib“ modulį. Šaunu, tiesa?
Laukia šviesi diena!
Cheers

Mes naudojome šablono eilutę $ PERSON_NAME kuris bus pakeistas asmens vardu, kurį gausime iš vartotojų.txt failas siunčiant el. laišką.

Gaunami vartotojo duomenys iš failo

Pirmasis žingsnis norint išsiųsti el. Laišką vartotojui yra nustatyti, kur mes norime siųsti el. Laiškus. Parašykime „Python“ funkciją, kuri priims failo pavadinimą ir grąžins mums vartotojo vardą ir el. Pašto ID, kur reikia siųsti el. Laiškus:

def get_users_data (failo_vardas):
vartotojo vardas = []
vartotojo_paštas = []
su open (failo_vardas, režimas = 'r', kodavimas = 'utf-8') kaip vartotojo_failas:
for user_info vartotojo_file:
Vartotojo vardas.pridėti (vartotojo_info.padalinti () [0])
vartotojo_el.laiškas.pridėti (vartotojo_info.padalinti () [1])
grąžinti vartotojo vardą, vartotojo el. paštą

Naudodamiesi šia funkcija, mes tiesiog grąžiname vartotojo vardus ir el. Pašto adresus, kuriuos gauname iš failo.

Šablono objekto gavimas

Dabar mes galime išanalizuoti savo šabloną ir gauti šablono objektą iš savo sukurto teksto failo:

def read_template (failo_vardas):
su open (failo_vardas, 'r', kodavimas = 'utf-8') kaip msg_template:
msg_template_content = msg_template.skaityti ()
grąžinti šabloną (msg_template_content)

Tai suteiksime šablono objektą, kurį naudosime išanalizuodami failo turinį ir atlikdami būtinus šablonų eilučių pakeitimus, pvz., Vartotojo vardą.

Kaip el. Paštas siunčiamas?

Dabar, kai esame pasirengę šablono dizainą ir vartotojo duomenis, turime suprasti, kaip el. Laiškas iš tikrųjų siunčiamas vartotojui:

SMTP ryšio nustatymas

Pagaliau apibrėžkime funkciją, kuri išsiųs el. Laišką paskirtiems vartotojams. Čia yra funkcija:

def pagrindinis ():
vartotojo_vardas, vartotojo_el.paštas = get_users_data ('vartotojai.txt ') # skaityti išsamią vartotojo informaciją
message_template = skaityti_template ('pranešimas.txt ')
# nustatykite SMTP serverį
smtplib_server = smtplib.SMTP (kompiuteris = 'smtp.gmail.com “, uostas = 587)
smtplib_server.starttls ()
smtplib_server.prisijungti (SEND_FROM, EMAIL_PWD)
# Gaukite kiekvieno vartotojo informaciją ir atsiųskite el. Laišką:
vardui, el. pašto adresui pakuotėje (vartotojo vardas, vartotojo el. paštas):
multipart_message = MIMEMultipart () # sukurkite pranešimą
# pridėkite tikrąjį asmens vardą prie pranešimo šablono
msg = message_template.pakaitalas (PERSON_NAME = vardas.pavadinimas ())
# Mūsų labui išspausdina pranešimo turinį
spausdinti (msg)
# nustatykite pranešimo parametrus
multipart_message ['From'] = SEND_FROM
multipart_message ['To'] = el. paštas
multipart_message ['Subject'] = "LinuxHint Email"
# pridėti pranešimo turinyje
multipart_message.pridėti (MIMEText (msg, 'paprastas'))
# išsiųskite pranešimą per anksčiau nustatytą serverį.
smtplib_server.send_message (multipart_message)
del multipart_message
# Nutraukite SMTP sesiją ir uždarykite ryšį
smtplib_server.mesti ()

Pirmiau pateiktoje funkcijoje mes atlikome kiekvieną žingsnį, kurį nurodėme ankstesniame skyriuje. Sukūrėme SMTP ryšį ir naudojome jį el. Laiškui siųsti.

Užbaigti programą

Paskutiniame skyriuje pažvelkime į visą programą, kurią galima naudoti norint išsiųsti el. Laišką paskirtam vartotojui:

importuoti smtplib
iš eilutės importavimo šablono
iš el.mimika.kelių dalių importas
iš el.mimika.teksto importas MIMETekstas
SEND_FROM = 'mano el. Paštas-čia'
EMAIL_PWD = 'mano slaptažodis čia'
def get_users_data (failo_vardas):
vartotojo vardas = []
vartotojo_paštas = []
su open (failo_vardas, režimas = 'r', kodavimas = 'utf-8') kaip vartotojo_failas:
už user_info vartotojo_file:
Vartotojo vardas.pridėti (vartotojo_info.padalinti () [0])
vartotojo_el.laiškas.pridėti (vartotojo_info.padalinti () [1])
grąžinti vartotojo vardą, vartotojo el. paštą
def read_template (failo_vardas):
su open (failo_vardas, 'r', kodavimas = 'utf-8') kaip msg_template:
msg_template_content = msg_template.skaityti ()
grąžinti šabloną (msg_template_content)
def pagrindinis ():
vartotojo_vardas, vartotojo_el.paštas = get_users_data ('vartotojai.txt ') # skaityti išsamią vartotojo informaciją
message_template = skaityti_template ('pranešimas.txt ')
# nustatykite SMTP serverį
smtplib_server = smtplib.SMTP (kompiuteris = 'smtp.gmail.com “, uostas = 587)
smtplib_server.starttls ()
smtplib_server.prisijungti (SEND_FROM, EMAIL_PWD)
# Gaukite kiekvieno vartotojo informaciją ir atsiųskite el. Laišką:
vardui, el. pašto adresui pakuotėje (vartotojo vardas, vartotojo el. paštas):
multipart_message = MIMEMultipart () # sukurkite pranešimą
# pridėkite tikrąjį asmens vardą prie pranešimo šablono
msg = message_template.pakaitalas (PERSON_NAME = vardas.pavadinimas ())
# Mūsų labui išspausdina pranešimo turinį
spausdinti (msg)
# nustatykite pranešimo parametrus
multipart_message ['From'] = SEND_FROM
multipart_message ['To'] = el. paštas
multipart_message ['Subject'] = "LinuxHint Email"
# pridėti pranešimo turinyje
multipart_message.pridėti (MIMEText (msg, 'paprastas'))
# išsiųskite pranešimą per anksčiau nustatytą serverį.
smtplib_server.send_message (multipart_message)
del multipart_message
# Nutraukite SMTP sesiją ir uždarykite ryšį
smtplib_server.mesti ()
jei __pavadinimas = = '__main__':
pagrindinis ()

Kai vykdysime šią programą su „Gmail“ ID, galite susidurti su tokia problema:

„Gmail“ SMTP klaida


Taip yra todėl, kad „Gmail“ neleidžia paprastiems scenarijams naudoti „Gmail“ API. Tam gali tekti išjungti saugos prisijungimą „Gmail“ paskyroje. Apie tai, kaip tai padaryti „Gmail“, skaitykite čia.

Išvada

Šioje pamokoje apžvelgėme, kaip galime siųsti el. Laiškus naudodami „Python“ smtplib modulis.

Kaip naudoti „AutoKey“, norint automatizuoti „Linux“ žaidimus
„AutoKey“ yra darbalaukio automatizavimo įrankis, skirtas „Linux“ ir „X11“, užprogramuotas „Python 3“, „GTK“ ir „Qt“. Naudodami scenarijų ir „MACRO“ f...
Kaip parodyti FPS skaitiklį „Linux“ žaidimuose
„Linux“ žaidimai gavo didelį postūmį, kai „Valve“ paskelbė „Linux“ palaikymą „Steam“ klientui ir jų žaidimams 2012 m. Nuo tada daugelis AAA ir indie ž...
Kaip atsisiųsti ir paleisti „Sid Meier Civilization VI“ sistemoje „Linux“
Įvadas į žaidimą „Civilization 6“ yra šiuolaikinė klasikinės koncepcijos, pristatytos „Age of Empires“ žaidimų serijoje, koncepcija. Idėja buvo gana p...