Å sende en mengde e-poster manuelt er en kjedelig oppgave. Du kan bruke tredjepartstjenester til å sende e-postene i bulk om gangen.
Hva med å lage ditt eget tilpassede skript for å sende e-poster?
Er det ikke fantastisk?
Ja det er. Vi skal skrive et skript i Python for å sende e-poster.
Python har et bibliotek kalt smtplib som brukes til å sende e-post. Biblioteket smtplib er basert på SMTP (Simple Mail Transport Protocol). SMTP brukes til å sende e-post til andre.
Innholdsfortegnelse
Konfigurer Gmail
Her skal vi bruke Gmail som e-postleverandør. Google tillater ikke skript å logge på. Og vi må gjøre en endring i sikkerheten til Gmail-kontoen vår som lar skript logge på Gmail-kontoen vår.
Å endre sikkerhetsalternativet i Gmail-kontoen vår er ikke bra, da det lar andre få tilgang til kontoen veldig enkelt. Det anbefales å opprette en ny Gmail-konto. Gå til innstillingene her og slå på Tillat mindre sikre apper: PÅ-innstillingen.
Hvis du ikke er komfortabel med å slå på innstillingen ovenfor, kan du bruke Google API for å logge på Gmail-kontoen din. Du kan finne skriptet for å bruke Googles API-er for autentisering her.
Fremgangsmåte for å sende e-post
Visse trinn må gjøres for å sende en e-post ved hjelp av smtplib-biblioteket. La oss først se fremgangsmåten, og så skriver vi manuset.
#1. Kobler til SMTP-serveren
Hver tjenesteleverandør vil ha forskjellige SMTP-serverdomenenavn og porter. Vi må bruke SMTP-serverens domenenavn og porten til e-postleverandøren som vi skal bruke i skriptet. SMTP-serverens domenenavn og port for Gmail er smtp.gmail.com og 465.
Vi vil bruke SSL-kryptering for SMTP-servertilkoblingen da den er sikrere enn TSL-krypteringen. Hvis du vil bruke TSL-krypteringen, bruk port 587 i stedet for 465. SMTP-serverens domenenavn vil være forskjellig basert på e-posttjenesteleverandøren.
Koden for å koble til SMTP-serveren
server = smtplib.SMTP_SSL(smtp_server_domain_name, port, context=ssl_context)
#2. Logg Inn
Når tilkoblingen er opprettet til SMTP-serveren, kan vi logge inn med e-postadressen og passordet med innloggings-SMTP-objektets metode. Koden ser ut som følger.
server.login(sender_email, password)
#3. Send e-post
Etter pålogging kan vi ikke vente med å sende e-posten. Send e-posten ved å bruke sendmail-metoden. Pass på at du sender e-posten i følgende format.
Emne: your_subject_for newline mail_content
Mellomrom er ikke nødvendig. De er bare for avklaring i formatet ovenfor. La oss se eksempelkoden.
server.sendmail(sender_mail, email, f"Subject: {subject}n{content}")
#4. Slutte
Ikke glem å avslutte SMTP c
Vi har sett fremgangsmåten for å sende e-post ved hjelp av Python. Men vi har ikke diskutert hele koden. La oss raskt gå gjennom koden.
import smtplib, ssl class Mail: def __init__(self): self.port = 465 self.smtp_server_domain_name = "smtp.gmail.com" self.sender_mail = "GMAIL_ADDRESS" self.password = "SECURE_PASSWORD" def send(self, emails, subject, content): ssl_context = ssl.create_default_context() service = smtplib.SMTP_SSL(self.smtp_server_domain_name, self.port, context=ssl_context) service.login(self.sender_mail, self.password) for email in emails: result = service.sendmail(self.sender_mail, email, f"Subject: {subject}n{content}") service.quit() if __name__ == '__main__': mails = input("Enter emails: ").split() subject = input("Enter subject: ") content = input("Enter content: ") mail = Mail() mail.send(mails, subject, content)
Vi har laget en klasse som heter Mail. Og den har en metode som heter send for å sende e-postene. Skrivekurs eller bare ikke er opp til deg. Klassen gjør den mer lesbar. Vi har implementert alle trinnene diskutert ovenfor én etter én i sendemetoden.
Hurra! du har sendt en e-post med Python-skript.
HTML-innhold
Hva om du vil sende e-posten i HTML? Er det mulig?
Ja, hvorfor ikke. Vi kan sende e-posten ved å bruke HTML, biblioteket kalt email.mime. Det er et innebygd bibliotek.
De MIME er en standard som brukes til å utvide formatet på e-poster til å støtte applikasjonsprogrammer, video, bilder osv.,
Det er to klasser vi trenger fra email.mime-modulen. De er MIMEText og MIMEMultipart. La oss se en kort forklaring om dem.
#1. MIMETekst
MIMEText-klassen brukes til å skrive e-postinnholdet vårt i HTML. Vi vil lage en forekomst av klassen MIMEText ved å sende HTML-innhold og innholdstypen. Se eksempelkoden nedenfor.
html_content = MIMEText(html_template, 'html')
Noen e-posttjenester støtter ikke HTML-gjengivelse. Så det er bedre å lage to forekomster av klassen MIMEText for ren tekst og HTML.
#2. MIMEMultipart
MIMEMultipart-klassen brukes til å forenkle formaterings- og skriveemnet, fra adresse, til adresse osv. Vi vil gi innholdet som er opprettet med MIMEText-klassen til MIMEMultipart ved å bruke attach-metoden.
Vi må sørge for at forekomsten av MIMEMultipart er opprettet med argumentet alternativet for å gjengi ren tekst eller HTML. La oss sende en e-post med HTML-innhold.
import smtplib, ssl from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart class Mail: def __init__(self): ... def send(self, emails): ssl_context = ssl.create_default_context() service = smtplib.SMTP_SSL(self.smtp_server_domain_name, self.port, context=ssl_context) service.login(self.sender_mail, self.password) for email in emails: mail = MIMEMultipart('alternative') mail['Subject'] = 'tipsbilk.net Celebrations' mail['From'] = self.sender_mail mail['To'] = email text_template = """ tipsbilk.net Hi {0}, We are delighted announce that our website hits 10 Million views this month. """ html_template = """ <h1>tipsbilk.net</h1> <p>Hi {0},</p> <p>We are delighted announce that our website hits <b>10 Million</b> views last month.</p> """ html_content = MIMEText(html_template.format(email.split("@")[0]), 'html') text_content = MIMEText(text_template.format(email.split("@")[0]), 'plain') mail.attach(text_content) mail.attach(html_content) service.sendmail(self.sender_mail, email, mail.as_string()) service.quit() if __name__ == '__main__': mails = input("Enter emails: ").split() mail = Mail() mail.send(mails)
Du kan også legge til blind karbonkopi ved å bruke det attributtet Bcc i MIMEMultipart-forekomsten.
Legger til vedlegg
Vedlegg kan være bilder, pdf-er, dokumenter, ark osv. Det kalles MIMEBase i email.mime-klassen. Den brukes til å legge til vedlegg i e-posten.
La oss legge til et vedlegg til e-posten ovenfor.
import smtplib, ssl from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders from pathlib import Path class Mail: def __init__(self): ... def send(self, emails): ## login... for email in emails: ## MIMEMultipart instance ## text and html templates ## MIMEText instances ## attaching messages to MIMEMultipart ## attaching an attachment file_path = "tipsbilk.net-logo.png" mimeBase = MIMEBase("application", "octet-stream") with open(file_path, "rb") as file: mimeBase.set_payload(file.read()) encoders.encode_base64(mimeBase) mimeBase.add_header("Content-Disposition", f"attachment; filename={Path(file_path).name}") mail.attach(mimeBase) ## sending mail service.quit() if __name__ == '__main__': mails = input("Enter emails: ").split() mail = Mail() mail.send(mails)
E-post til masseposter på en gang
Vi har brukt en loop for å sende samme e-post til flere medlemmer. Det er ett tilfelle (når du ikke vil at mottakerne skal vite om andre mottakere).
Anta at du må sende samme e-post til 1000 medlemmer samtidig fra samme gruppe. I slike tilfeller vil det ikke være hensiktsmessig å bruke en løkke. Vi kan legge til flere e-poster i Til-feltet i generell postskriving. Hvordan gjør jeg det i Python-skriptet?
Vi må kombinere listen over e-poster som en streng atskilt med komma og mellomrom. Vi kan bruke sammenføyningsmetodestrengen for å kombinere alle e-poster som en streng. Se koden for å kombinere e-poster som en streng.
", ".join(emails)
Erstatt Til-feltet i skriptet ovenfor ved å bruke strengen ovenfor. Det er det, du har sendt e-posten til masseposter på en gang.
Konklusjon
Det er noen tredjepartsbiblioteker for å sende e-poster i Python. Noen av dem er det Konvolutter, Yagmail, Flanker, etc.., Disse bibliotekene hjelper oss å skrive skript med få linjer med kode. Du kan også utforske dem.
Nå kan du automatisere e-postsakene dine ved å bruke Python-skript. Strukturen for å sende e-poster vil være forskjellig basert på din brukssituasjon. Vi har sett forskjellige scenarier for å sende e-post. Du kan enkelt tilpasse skriptene som er omtalt i opplæringen til ditt bruksområde. Jeg har hentet referansen fra dette artikkel.
Lykke til med koding 🙂