I denne leksjonen vil jeg dele skriptet jeg bruker for å sende e -post til brukerne av appene jeg lager og mer.
Hva vi skal gjøre?
Vi vil lage et enkelt Python -program som vil gjøre følgende:
Disse punktene gjør dette programmet mye nærmere en virkelig bruk av å sende e-post i appene dine. La oss komme i gang.
Fil for e -post
Filen som inneholder e -postene for brukerne vil se slik ut:
Shubham [email protected]
Dette er bare en enkel tekstfil som inneholder brukerens navn og e -post atskilt med plass. Flere e -postmeldinger er lagt med hver brukers data i en ny linje. Vi kalte denne filen Brukere.tekst.
Bruke malen
La oss raskt definere malen som vi vil bruke i skriptet vårt for å erstatte verdier:
Hei $ person_name,
Vi sendte denne e -posten ved hjelp av Python SMTPLIB -modul. Kult, ikke sant?
Ha en lys dag fremover!
Jubel
Vi har brukt en malstreng $ Person_name som vil bli erstattet med navnet på personen vi får fra brukerne.txt -fil mens du sender e -posten.
Få brukerdata fra filen
Det første trinnet å sende e -post til en bruker er å identifisere det der vi ønsker å sende e -postene til. La oss skrive en Python -funksjon som vil godta et filnavn og returnerer amerikanske brukere navn og e -post -ID -er der e -postene må sendes:
def get_users_data (file_name):
user_name = []
user_email = []
Med Open (File_Name, Mode = 'R', Coding = 'UTF-8') som User_File:
For user_info i user_file:
brukernavn.vedlegg (user_info.split () [0])
user_email.vedlegg (user_info.split () [1])
return user_name, user_email
Med denne funksjonen returnerer vi bare brukerens navn og e -postmeldinger som vi får fra filen.
Få malobjektet
Nå kan vi analysere malen vår og få et malobjekt fra tekstfilen vi laget:
def read_template (file_name):
Med Open (File_Name, 'R', Encoding = 'UTF-8') som MSG_TEMPLATE:
msg_template_content = msg_template.lese()
returmal (msg_template_content)
Med dette vil vi få tilbake et malobjekt som vi kan bruke til å analysere innholdet i filen og lage nødvendige erstatninger for malstrengene som en brukers navn.
Hvordan sending av e -post blir gjort?
Nå som vi er klare med maldesign og brukerens data, må vi forstå hvordan en e -post faktisk sendes til brukeren:
Sette opp SMTP -tilkobling
La oss endelig definere funksjonen som vil sende e -posten til de utpekte brukerne. Her er funksjonen:
def main ():
user_name, user_email = get_users_data ('brukere.txt ') # Les brukerdetaljer
Message_Template = read_template ('Melding.tekst')
# Sett opp SMTP -serveren
SMTPLIB_SERVER = SMTPLIB.SMTP (vert = 'SMTP.Gmail.com ', port = 587)
SMTPLIB_SERVER.starttls ()
SMTPLIB_SERVER.Logg inn (send_from, e -post_pwd)
# Få hver brukerdetalj og send e -posten:
For navn, e -post i ZIP (brukernavn, user_email):
multipart_message = mimemultipart () # Opprett en melding
# Legg til det faktiske personnavnet til meldingsmalen
msg = message_template.erstatning (person_navn = navn.tittel())
# Skriver ut meldingskroppen for vår skyld
Print (MSG)
# Sett opp parametrene for meldingen
multipart_message ['fra'] = send_from
multipart_message ['til'] = e -post
multipart_message ['emne'] = "linuxhint e -post"
# Legg til meldingsorganet
Multipart_Message.vedlegg (mimetext (msg, 'vanlig'))
# Send meldingen via serveren som er satt opp tidligere.
SMTPLIB_SERVER.Send_Message (Multipart_Message)
Del Multipart_Message
# Avslutt SMTP -økten og lukk forbindelsen
SMTPLIB_SERVER.slutte()
I ovennevnte funksjon fulgte vi hvert trinn vi uttalte i forrige avsnitt. Vi konstruerte SMTP -tilkoblingen og brukte den til å sende e -posten.
Komplett program
I sluttdelen, la oss se på det komplette programmet som kan brukes til å sende e -posten til utpekt bruker:
Importer SMTPLIB
Fra strengimportmal
fra e -post.mime.Multipart Import MimemultIPart
fra e -post.mime.Tekstimport mimetext
Send_from = 'my-e-post-her'
E-post_pwd = 'my-password-her'
def get_users_data (file_name):
user_name = []
user_email = []
Med Open (File_Name, Mode = 'R', Coding = 'UTF-8') som User_File:
For user_info i user_file:
brukernavn.vedlegg (user_info.split () [0])
user_email.vedlegg (user_info.split () [1])
return user_name, user_email
def read_template (file_name):
Med Open (File_Name, 'R', Encoding = 'UTF-8') som MSG_TEMPLATE:
msg_template_content = msg_template.lese()
returmal (msg_template_content)
def main ():
user_name, user_email = get_users_data ('brukere.txt ') # Les brukerdetaljer
Message_Template = read_template ('Melding.tekst')
# Sett opp SMTP -serveren
SMTPLIB_SERVER = SMTPLIB.SMTP (vert = 'SMTP.Gmail.com ', port = 587)
SMTPLIB_SERVER.starttls ()
SMTPLIB_SERVER.Logg inn (send_from, e -post_pwd)
# Få hver brukerdetalj og send e -posten:
For navn, e -post i ZIP (brukernavn, user_email):
multipart_message = mimemultipart () # Opprett en melding
# Legg til det faktiske personnavnet til meldingsmalen
msg = message_template.erstatning (person_navn = navn.tittel())
# Skriver ut meldingskroppen for vår skyld
Print (MSG)
# Sett opp parametrene for meldingen
multipart_message ['fra'] = send_from
multipart_message ['til'] = e -post
multipart_message ['emne'] = "linuxhint e -post"
# Legg til meldingsorganet
Multipart_Message.vedlegg (mimetext (msg, 'vanlig'))
# Send meldingen via serveren som er satt opp tidligere.
SMTPLIB_SERVER.Send_Message (Multipart_Message)
Del Multipart_Message
# Avslutt SMTP -økten og lukk forbindelsen
SMTPLIB_SERVER.slutte()
if __name__ == '__main__':
hoved()
Når vi kjører dette programmet med en Gmail -ID, kan du møte et problem som dette:
Gmail SMTP -feil
Konklusjon
I denne leksjonen så vi på hvordan vi kan sende e -post ved hjelp av Pythons smtplib modul.