Pytonorm

Skicka ett e-postmeddelande i Python

Skicka ett e-postmeddelande i Python
Skicka ett e-postmeddelande är en av de vanligaste uppgifterna jag behöver göra i webbapplikationerna och andra projekt jag skapar. Med Python är detta ganska enkelt och enkelt att göra. Även när vi behöver använda några fördefinierade mallar hjälper Python oss att ersätta platshållarvärden med faktiska data så att det slutliga e-postmeddelandet ser elegant ut och fylls med detaljer som gör min klient glad.

I den här lektionen delar jag skriptet som jag använder för att skicka e-post till användarna av de appar jag skapar och mer.

Vad vi ska göra?

Vi skapar ett enkelt Python-program som gör följande:

Dessa punkter gör det här programmet mycket närmare en verklig användning av att skicka e-post i dina appar. Låt oss börja.

Fil för e-post

Filen som innehåller e-postmeddelanden för användarna kommer att se ut så här:

Shubham shubham.kod @ gmail.com

Detta är bara en enkel textfil som innehåller användarnamn och e-postadress åtskilda av mellanslag. Flera e-postmeddelanden har lagts med varje användares data i en ny rad. Vi heter den här filen användare.Text.

Använda mallen

Låt oss snabbt definiera mallen också som vi kommer att använda i vårt skript för att ersätta värden:

Hej $ PERSON_NAME,
Vi skickade det här e-postmeddelandet med hjälp av Python smtplib-modulen. Cool, rätt?
Ha en ljus dag framåt!
Skål

Vi har använt en mallsträng $ PERSON_NAME som kommer att ersättas med namnet på den person vi får från användarna.txt-fil när du skickar e-postmeddelandet.

Hämta användardata från filen

Det första steget för att skicka e-post till en användare är att identifiera det där vi vill skicka e-postmeddelandena till. Låt oss skriva en Python-funktion som accepterar ett filnamn och returnerar oss användarnamn och e-post-ID där e-postmeddelandena måste skickas:

def get_users_data (filnamn):
användarnamn = []
user_email = []
med öppen (filnamn, läge = 'r', kodning = 'utf-8') som användarfil:
för user_info i user_file:
Användarnamn.lägg till (user_info.split () [0])
user_email.lägg till (user_info.split () [1])
returnera användarnamn, användar-e-post

Med den här funktionen returnerar vi bara användarens namn och e-postmeddelanden som vi får från filen.

Skaffa mallobjektet

Nu kan vi analysera vår mall och få ett mallobjekt från textfilen vi skapade:

def read_template (filnamn):
med öppen (filnamn, 'r', kodning = 'utf-8') som msg_template:
msg_template_content = msg_template.läsa()
returnera mall (msg_template_content)

Med detta kommer vi tillbaka ett mallobjekt som vi kan använda för att analysera innehållet i filen och göra nödvändiga ersättningar för mallsträngarna som en användares namn.

Hur e-post skickas sker?

Nu när vi är redo med mallutformningen och användarens data måste vi förstå hur ett e-postmeddelande faktiskt skickas till användaren:

Konfigurera SMTP-anslutning

Låt oss äntligen definiera funktionen som skickar e-postmeddelandet till de utsedda användarna. Här är funktionen:

def huvud ():
user_name, user_email = get_users_data ('användare.txt ') # läs användardetaljer
message_template = read_template ('meddelande.Text')
# ställa in SMTP-servern
smtplib_server = smtplib.SMTP (värd = 'smtp.gmail.com ', port = 587)
smtplib_server.starttls ()
smtplib_server.inloggning (SEND_FROM, EMAIL_PWD)
# Få varje användardetalj och skicka e-postmeddelandet:
för namn, e-post i zip (user_name, user_email):
multipart_message = MIMEMultipart () # skapa ett meddelande
# lägg till det faktiska personnamnet i meddelandemallen
msg = meddelande_mall.ersättare (PERSON_NAME = namn.titel())
# Skriver ut meddelandetexten för vår skull
skriva ut (msg)
# ställa in parametrarna för meddelandet
multipart_message ['From'] = SEND_FROM
multipart_message ['Till'] = e-post
multipart_message ['Subject'] = "E-post med LinuxHint"
# lägg till i meddelandetexten
multipart_message.bifoga (MIMEText (msg, 'vanlig'))
# skicka meddelandet via den tidigare konfigurerade servern.
smtplib_server.send_message (multipart_message)
del multipart_message
# Avsluta SMTP-sessionen och stäng anslutningen
smtplib_server.sluta()

I ovanstående funktion följde vi varje steg som vi angav i föregående avsnitt. Vi konstruerade SMTP-anslutningen och använde den för att skicka e-postmeddelandet.

Komplett program

I det sista avsnittet, låt oss ta en titt på hela programmet som kan användas för att skicka e-postmeddelandet till utsedd användare:

importera smtplib
från strängimportmall
från epost.mima.multipelimport MIMEMultipart
från epost.mima.textimport MIMEText
SEND_FROM = 'min-e-post-här'
EMAIL_PWD = 'mitt-lösenord-här'
def get_users_data (filnamn):
användarnamn = []
user_email = []
med öppen (filnamn, läge = 'r', kodning = 'utf-8') som användarfil:
för user_info i user_file:
Användarnamn.lägg till (user_info.split () [0])
user_email.lägg till (user_info.split () [1])
returnera användarnamn, användar-e-post
def read_template (filnamn):
med öppen (filnamn, 'r', kodning = 'utf-8') som msg_template:
msg_template_content = msg_template.läsa()
returnera mall (msg_template_content)
def huvud ():
user_name, user_email = get_users_data ('användare.txt ') # läs användardetaljer
message_template = read_template ('meddelande.Text')
# ställa in SMTP-servern
smtplib_server = smtplib.SMTP (värd = 'smtp.gmail.com ', port = 587)
smtplib_server.starttls ()
smtplib_server.inloggning (SEND_FROM, EMAIL_PWD)
# Få varje användardetalj och skicka e-postmeddelandet:
för namn, e-post i zip (user_name, user_email):
multipart_message = MIMEMultipart () # skapa ett meddelande
# lägg till det faktiska personnamnet i meddelandemallen
msg = meddelande_mall.ersättare (PERSON_NAME = namn.titel())
# Skriver ut meddelandetexten för vår skull
skriva ut (msg)
# ställa in parametrarna för meddelandet
multipart_message ['From'] = SEND_FROM
multipart_message ['Till'] = e-post
multipart_message ['Subject'] = "LinuxHint e-post"
# lägg till i meddelandetexten
multipart_message.bifoga (MIMEText (msg, 'vanlig'))
# skicka meddelandet via den tidigare konfigurerade servern.
smtplib_server.send_message (multipart_message)
del multipart_message
# Avsluta SMTP-sessionen och stäng anslutningen
smtplib_server.sluta()
om __name__ == '__main__':
huvud ()

När vi kör det här programmet med ett Gmail-ID kan du stöta på ett sådant problem:

Gmail SMTP-fel


Detta beror på att Gmail inte tillåter vanliga skript att använda Gmail API. För detta kan du behöva inaktivera säkerhetsinloggning i ditt Gmail-konto. Läs om hur du gör detta för Gmail här.

Slutsats

I den här lektionen tittade vi på hur vi kan skicka e-postmeddelanden med Pythons smtplib modul.

Mus Mellan musknappen fungerar inte i Windows 10
Mellan musknappen fungerar inte i Windows 10
De mittknappen hjälper dig att bläddra igenom långa webbsidor och skärmar med mycket data. Om det slutar, kommer du sluta använda tangentbordet för at...
Mus Hur man ändrar vänster och höger musknapp på Windows 10 PC
Hur man ändrar vänster och höger musknapp på Windows 10 PC
Det är en hel norm att alla datormusenheter är ergonomiskt utformade för högerhänta användare. Men det finns musenheter tillgängliga som är speciellt ...
Mus Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Att använda en mus eller tangentbord i fel hållning av överdriven användning kan resultera i många hälsoproblem, inklusive stam, karpaltunnelsyndrom o...