Python

Afsendelse af en e-mail i Python

Afsendelse af en e-mail i Python
Afsendelse af en e-mail er en af ​​de mest almindelige opgaver, jeg skal udføre i de webapplikationer og andre projekter, jeg opretter. Med Python er dette ret ligetil og let at gøre. Selv når vi har brug for nogle foruddefinerede skabeloner, hjælper Python os med at erstatte pladsholderværdier med faktiske data, så den endelige e-mail ser elegant ud og fyldt med detaljer, der gør min klient glad.

I denne lektion deler jeg det script, jeg bruger til at sende e-mails til brugerne af de apps, jeg laver og mere.

Hvad vi skal gøre?

Vi opretter et simpelt Python-program, der gør følgende:

Disse punkter gør dette program meget tættere på den virkelige brug af at sende e-mails i dine apps. Lad os komme igang.

Fil til e-mails

Filen, der indeholder e-mails til brugerne, ser sådan ud:

Shubham shubham.kode @ gmail.com

Dette er bare en simpel tekstfil, der indeholder brugerens navn og e-mail adskilt af mellemrum. Flere e-mails er blevet sat med hver brugers data i en ny linje. Vi navngav denne fil brugere.txt.

Brug af skabelonen

Lad os hurtigt definere skabelonen, som vi også bruger i vores script til at erstatte værdier:

Hej $ PERSON_NAME,
Vi sendte denne e-mail ved hjælp af Python smtplib-modul. Sejt, rigtigt?
Hav en lys dag i vente!
Skål

Vi har brugt en skabelonstreng $ PERSON_NAME som erstattes med navnet på den person, vi får fra brugerne.txt-fil, mens du sender e-mailen.

Henter brugerdata fra filen

Det første skridt til at sende e-mail til en bruger er at identificere det, hvor vi vil sende e-mails til. Lad os skrive en Python-funktion, der accepterer et filnavn og returnerer os brugernavn og e-mail-id'er, hvor e-mails skal sendes:

def get_users_data (filnavn):
brugernavn = []
user_email = []
med åben (filnavn, tilstand = 'r', kodning = 'utf-8') som brugerfil:
til brugerinfo i brugerfil:
brugernavn.tilføj (user_info.split () [0])
bruger-e-mail.tilføj (user_info.split () [1])
returner brugernavn, brugernavn

Med denne funktion returnerer vi bare brugerens navne og e-mails, som vi får fra filen.

Sådan får du skabelonobjektet

Nu kan vi analysere vores skabelon og få et skabelonobjekt fra den tekstfil, vi lavede:

def read_template (filnavn):
med åben (filnavn, 'r', kodning = 'utf-8') som msg_template:
msg_template_content = msg_template.Læs()
returner skabelon (msg_template_content)

Med dette får vi et skabelonobjekt tilbage, som vi kan bruge til at analysere indholdet af filen og foretage de nødvendige udskiftninger til skabelonstrengene som en brugers navn.

Sådan sendes e-mail?

Nu hvor vi er klar med skabelondesignet og brugerens data, skal vi forstå, hvordan en e-mail faktisk sendes til brugeren:

Opsætning af SMTP-forbindelse

Lad os endelig definere den funktion, som sender e-mailen til de udpegede brugere. Her er funktionen:

def hoved ():
user_name, user_email = get_users_data ('brugere.txt ') # læs brugeroplysninger
message_template = read_template ('besked.txt ')
# opsæt SMTP-serveren
smtplib_server = smtplib.SMTP (vært = 'smtp.gmail.com ', port = 587)
smtplib_server.starttls ()
smtplib_server.login (SEND_FROM, EMAIL_PWD)
# Få hver brugerdetalje og send e-mailen:
for navn, e-mail i zip (user_name, user_email):
multipart_message = MIMEMultipart () # opret en besked
# tilføj det aktuelle personnavn til beskedskabelonen
msg = besked_skabelon.erstatning (PERSON_NAME = navn.titel())
# Udskriver meddelelsesteksten for vores skyld
udskrive (msg)
# opsæt parametrene for meddelelsen
multipart_message ['From'] = SEND_FROM
multipart_message ['To'] = e-mail
multipart_message ['Subject'] = "LinuxHint e-mail"
# tilføj i meddelelsens brødtekst
multipart_besked.vedhæft (MIMEText (msg, 'almindelig'))
# send beskeden via den tidligere konfigurerede server.
smtplib_server.send_message (multipart_message)
del multipart_message
# Afslut SMTP-sessionen og luk forbindelsen
smtplib_server.Afslut()

I ovenstående funktion fulgte vi hvert trin, vi angav i det foregående afsnit. Vi konstruerede SMTP-forbindelsen og brugte den til at sende e-mailen.

Komplet program

I det sidste afsnit, lad os se på det komplette program, der kan bruges til at sende e-mailen til den udpegede bruger:

importer smtplib
fra streng import skabelon
fra e-mail.mime.multipartimport MIMEMultipart
fra e-mail.mime.tekstimport MIMEText
SEND_FROM = 'min-e-mail-her'
EMAIL_PWD = 'min-adgangskode-her'
def get_users_data (filnavn):
brugernavn = []
user_email = []
med åben (filnavn, tilstand = 'r', kodning = 'utf-8') som brugerfil:
til brugerinfo i brugerfil:
brugernavn.tilføj (user_info.split () [0])
bruger-e-mail.tilføj (user_info.split () [1])
returner brugernavn, brugernavn
def read_template (filnavn):
med åben (filnavn, 'r', kodning = 'utf-8') som msg_template:
msg_template_content = msg_template.Læs()
returner skabelon (msg_template_content)
def hoved ():
user_name, user_email = get_users_data ('brugere.txt ') # læs brugeroplysninger
message_template = read_template ('besked.txt ')
# opsæt SMTP-serveren
smtplib_server = smtplib.SMTP (vært = 'smtp.gmail.com ', port = 587)
smtplib_server.starttls ()
smtplib_server.login (SEND_FROM, EMAIL_PWD)
# Få hver brugerdetalje og send e-mailen:
for navn, e-mail i zip (user_name, user_email):
multipart_message = MIMEMultipart () # opret en besked
# tilføj det aktuelle personnavn til beskedskabelonen
msg = besked_skabelon.erstatning (PERSON_NAME = navn.titel())
# Udskriver meddelelsesteksten for vores skyld
udskrive (msg)
# opsæt parametrene for meddelelsen
multipart_message ['From'] = SEND_FROM
multipart_message ['To'] = e-mail
multipart_message ['Subject'] = "LinuxHint e-mail"
# tilføj i meddelelsens brødtekst
multipart_besked.vedhæft (MIMEText (msg, 'almindelig'))
# send beskeden via den tidligere konfigurerede server.
smtplib_server.send_message (multipart_message)
del multipart_message
# Afslut SMTP-sessionen og luk forbindelsen
smtplib_server.Afslut()
hvis __name__ == '__main__':
hoved ()

Når vi kører dette program med et Gmail-id, står du muligvis over for et problem som dette:

Gmail SMTP-fejl


Dette skyldes, at Gmail ikke tillader almindelige scripts at bruge Gmail API. Til dette skal du muligvis deaktivere sikkerhedslogin på din Gmail-konto. Læs om, hvordan du gør dette til Gmail her.

Konklusion

I denne lektion kiggede vi på, hvordan vi kan sende e-mails ved hjælp af Pythons smtplib modul.

Bedste spilkonsolemulatorer til Linux
Denne artikel viser en liste over populære spilkonsolemuleringssoftware, der er tilgængelig til Linux. Emulation er et softwarekompatibilitetslag, der...
Bedste Linux Distros til spil i 2021
Linux-operativsystemet er kommet langt fra dets originale, enkle, serverbaserede udseende. Dette operativsystem er forbedret enormt i de senere år og ...
Sådan registreres og streames din gaming-session på Linux
Tidligere blev spil kun betragtet som en hobby, men med tiden oplevede spilindustrien en enorm vækst med hensyn til teknologi og antallet af spillere....