Python

E-kirja saatmine Pythonis

E-kirja saatmine Pythonis
E-kirja saatmine on üks levinumaid ülesandeid, mida pean oma loodud veebirakendustes ja muudes projektides tegema. Pythoni puhul on see üsna lihtne ja lihtne asi. Isegi kui peame kasutama mõnda eelnevalt määratletud malli, aitab Python meil asendada kohatäite väärtused tegelike andmetega, nii et viimane e-kiri näeks välja elegantne ja detailidega täidetud, mis teeb mu kliendi õnnelikuks.

Selles tunnis jagan skripti, mida kasutan enda loodud rakenduste ja muu kasutajate jaoks meilide saatmiseks.

Mida me teeme?

Loome lihtsa Pythoni programmi, mis teeb järgmist:

Need punktid muudavad selle programmi palju lähemale teie rakendustes e-kirjade saatmise reaalsele kasutamisele. Alustame.

Fail meilide jaoks

Fail, mis sisaldab kasutajate e-kirju, näeb välja selline:

Shubham šubham.kood @ gmail.com

See on lihtsalt lihtne tekstifail, mis sisaldab tühikuga eraldatud kasutaja nime ja e-posti aadressi. Iga kasutaja andmetega on uude ritta pandud mitu e-kirja. Panime sellele failile nimeks kasutajad.txt.

Malli kasutamine

Määratleme kiiresti ka mall, mida kasutame oma skriptis väärtuste asendamiseks:

Tere, $ PERSON_NAME,
Saatsime selle meili Pythoni smtplib mooduli abil. Lahe, eks?
Ees on särav päev!
Terviseks

Oleme kasutanud mallistringi $ PERSON_NAME mis asendatakse kasutajatelt saadud inimese nimega.txt-fail meili saatmise ajal.

Kasutajaandmete hankimine failist

Esimene samm kasutajale e-kirja saatmiseks on tuvastada see, kuhu me soovime e-kirjad saata. Kirjutame Pythoni funktsiooni, mis aktsepteerib failinime ja tagastab meile kasutajanime ja e-posti ID-d, kuhu tuleb meilid saata:

def get_users_data (faili nimi):
kasutajanimi = []
kasutaja_post = []
avatud (faili_nimi, mode = 'r', encoding = 'utf-8') kasutajafailina:
kasutaja_info jaoks kasutaja_failis:
kasutajanimi.lisa (kasutajainfo.jagama () [0])
user_email.lisa (kasutajainfo.jaotus () [1])
tagastage kasutajanimi, kasutajanimi

Selle funktsiooni abil tagastame lihtsalt kasutaja nimed ja meilid, mille saame failist.

Malliobjekti hankimine

Nüüd saame oma malli sõeluda ja enda loodud tekstifailist malli malli hankida:

def read_template (faili_nimi):
avatuna (faili_nimi, 'r', kodeerimine = 'utf-8') msg_template'ina:
msg_template_content = msg_template.loe ()
tagastage mall (msg_template_content)

Sellega saame tagasi malli malli, mida saab kasutada faili sisu sõelumiseks ja mallistringidele vajalike asenduste tegemiseks, näiteks kasutaja nimi.

Kuidas meilisõnumeid saadetakse?

Nüüd, kui oleme mallikujunduse ja kasutajaandmetega valmis, peame mõistma, kuidas meil kasutajale tegelikult saadetakse:

SMTP-ühenduse seadistamine

Määratleme lõpuks funktsioon, mis saadab meilisõnumi määratud kasutajatele. Siin on funktsioon:

def main ():
user_name, user_email = get_users_data ('kasutajad.txt ') # loe kasutaja üksikasju
message_template = read_template ('sõnum.txt ')
# seadistas SMTP-serveri
smtplib_server = smtplib.SMTP (host = 'smtp.gmail.com ', port = 587)
smtplib_server.starttls ()
smtplib_server.sisselogimine (SEND_FROM, EMAIL_PWD)
# Hankige iga kasutaja üksikasjad ja saatke meil:
nime jaoks, e-posti aadress ZIP-vormingus (kasutajanimi, kasutajanimi):
multipart_message = MIMEMultipart () # loo sõnum
# lisage sõnumimalli tegeliku isiku nimi
msg = message_template.asendaja (PERSON_NAME = nimi.pealkiri ()
# Prindib sõnumi sisu meie huvides
print (msg)
# seadistage sõnumi parameetrid
multipart_message ['From'] = SEND_FROM
multipart_message ['To'] = e-post
multipart_message ['Subject'] = "LinuxHinti e-post"
# lisa sõnumi sisusse
mitmeosaline_sõnum.manus (MIMEText (msg, 'tavaline'))
# saatke sõnum varem seadistatud serveri kaudu.
smtplib_server.send_message (mitmeosaline_sõnum)
del mitmeosaline_sõnum
# Lõpetage SMTP seanss ja sulgege ühendus
smtplib_server.lõpetage ()

Eespool toodud funktsioonis järgisime igat sammu, mille eelmises osas märkisime. Ehitasime SMTP-ühenduse ja kasutasime seda meili saatmiseks.

Täielik programm

Viimases jaotises heitkem pilk kogu programmile, mida saab kasutada e-kirja saatmiseks määratud kasutajale:

import smtplib
stringimalli mallist
e-postist.miimika.mitmeosaline import MIMEMitu osa
e-postist.miimika.teksti import MIMETekst
SEND_FROM = 'minu e-post-siia'
EMAIL_PWD = 'minu parool-siin'
def get_users_data (faili_nimi):
kasutajanimi = []
kasutaja_post = []
avatud (faili_nimi, mode = 'r', encoding = 'utf-8') kasutajafailina:
kasutaja_info jaoks kasutaja_failis:
kasutajanimi.lisa (kasutaja_info.poolitama () [0])
user_email.lisa (kasutaja_info.jaotus () [1])
tagastage kasutajanimi, kasutajanimi
def read_template (faili_nimi):
avatuna (faili_nimi, 'r', kodeerimine = 'utf-8') msg_template'ina:
msg_template_content = msg_template.loe ()
tagastage mall (msg_template_content)
def main ():
user_name, user_email = get_users_data ('kasutajad.txt ') # loe kasutaja üksikasju
message_template = read_template ('sõnum.txt ')
# seadistas SMTP-serveri
smtplib_server = smtplib.SMTP (host = 'smtp.gmail.com ', port = 587)
smtplib_server.starttls ()
smtplib_server.sisselogimine (SEND_FROM, EMAIL_PWD)
# Hankige iga kasutaja üksikasjad ja saatke meil:
nime jaoks, e-posti aadress ZIP-vormingus (kasutajanimi, kasutajanimi):
multipart_message = MIMEMultipart () # loo sõnum
# lisage sõnumimalli tegeliku isiku nimi
msg = message_template.asendaja (PERSON_NAME = nimi.pealkiri ()
# Prindib sõnumi sisu meie huvides
print (msg)
# seadistage sõnumi parameetrid
multipart_message ['From'] = SEND_FROM
multipart_message ['Saaja'] = e-post
multipart_message ['Subject'] = "LinuxHinti e-post"
# lisa sõnumi sisusse
mitmeosaline_sõnum.manus (MIMEText (msg, 'tavaline'))
# saatke sõnum varem seadistatud serveri kaudu.
smtplib_server.send_message (mitmeosaline_sõnum)
del mitmeosaline_sõnum
# Lõpetage SMTP seanss ja sulgege ühendus
smtplib_server.lõpetage ()
kui __nimi__ == '__main__':
peamine ()

Kui käivitame selle programmi Gmaili ID-ga, võib teil tekkida selline probleem:

Gmaili SMTP viga


Seda seetõttu, et Gmail ei luba tavalistel skriptidel kasutada Gmaili API-d. Selleks peate võib-olla oma Gmaili kontol turvasisselogimise keelama. Siit saate lugeda, kuidas seda Gmaili jaoks teha.

Järeldus

Selles tunnis vaatasime, kuidas saaksime Pythoni abil e-kirju saata smtplib moodul.

How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
X-Mouse Button Control abil saate hiire nupud erinevates tarkvarades erinevalt ümber teha
Võib-olla vajate tööriista, mis võiks muuta teie hiire juhtimissüsteemi iga kasutatava rakendusega. Sel juhul võite proovida rakendust nimega X hiiren...
Microsoft Sculpt Touch juhtmeta hiirte ülevaade
Lugesin hiljuti Microsoft Sculpt Touch juhtmevaba hiir ja otsustas selle osta. Pärast mõnda aega kasutamist otsustasin jagada sellega oma kogemusi. Se...