Python

Een e-mail verzenden in Python

Een e-mail verzenden in Python
Het verzenden van een e-mail is een van de meest voorkomende taken die ik moet doen in de webapplicaties en andere projecten die ik maak. Met Python is dit vrij eenvoudig en gemakkelijk om te doen. Zelfs als we gebruik moeten maken van een aantal vooraf gedefinieerde sjablonen, helpt Python ons om plaatsaanduidingswaarden te vervangen door werkelijke gegevens, zodat de uiteindelijke e-mail er elegant uitziet en vol zit met details waar mijn klant blij van wordt.

In deze les deel ik het script dat ik gebruik om e-mails te sturen naar de gebruikers van de apps die ik maak en meer.

Wat gaan we doen??

We zullen een eenvoudig Python-programma maken dat het volgende doet:

Deze punten maken dit programma veel dichter bij een echt gebruik van het verzenden van e-mails in uw apps. Laten we beginnen.

Bestand voor e-mails

Het bestand dat de e-mails voor de gebruikers bevat, ziet er als volgt uit:

Shubham [email protected]

Dit is slechts een eenvoudig tekstbestand dat de naam en het e-mailadres van de gebruiker bevat, gescheiden door spatie. Er zijn meerdere e-mails met de gegevens van elke gebruiker in een nieuwe regel geplaatst. We noemden dit bestand gebruikers.tekst.

De sjabloon gebruiken

Laten we snel ook de sjabloon definiëren die we in ons script zullen gebruiken om waarden te vervangen:

Hallo $PERSON_NAME,
We hebben deze e-mail verzonden met de Python smtplib-module. Cool toch?
Fijne dag voor de boeg!
Proost

We hebben een sjabloonstring gebruikt $PERSON_NAME die zal worden vervangen door de naam van de persoon die we van de gebruikers krijgen.txt-bestand tijdens het verzenden van de e-mail.

Gebruikersgegevens ophalen uit bestand

De eerste stap om een ​​e-mail naar een gebruiker te sturen, is bepalen waar we de e-mails naartoe willen sturen. Laten we een Python-functie schrijven die een bestandsnaam accepteert en ons de gebruikersnaam en e-mail-ID's retourneert waar de e-mails naartoe moeten worden verzonden:

def get_users_data(bestandsnaam):
gebruikersnaam = []
gebruiker_e-mail = []
met open(file_name, mode='r', encoding='utf-8') als user_file:
voor user_info in user_file:
gebruikersnaam.toevoegen(user_info.split()[0])
gebruiker_e-mail.toevoegen(user_info.splitsen()[1])
retourneer gebruikersnaam, e-mailadres gebruiker

Met deze functie retourneren we gewoon de gebruikersnamen en e-mails die we van het bestand krijgen.

Het sjabloonobject ophalen

Nu kunnen we onze sjabloon ontleden en een sjabloonobject ophalen uit het tekstbestand dat we hebben gemaakt:

def read_template(bestandsnaam):
met open(file_name, 'r', encoding='utf-8') als msg_template:
msg_template_content = msg_template.lezen()
retoursjabloon (msg_template_content)

Hiermee krijgen we een sjabloonobject terug dat we kunnen gebruiken om de inhoud van het bestand te ontleden en noodzakelijke vervangingen voor de sjabloonreeksen te maken, zoals een gebruikersnaam.

Hoe e-mailverzending wordt gedaan?

Nu we klaar zijn met het sjabloonontwerp en de gebruikersgegevens, moeten we begrijpen hoe een e-mail daadwerkelijk naar de gebruiker wordt verzonden:

SMTP-verbinding instellen

Laten we eindelijk de functie definiëren die de e-mail naar de aangewezen gebruikers zal sturen. Hier is de functie:

def hoofd():
user_name, user_email = get_users_data('users'.txt') # lees gebruikersdetails
message_template = read_template('bericht.tekst')
# stel de SMTP-server in
smtplib_server = smtplib.SMTP(host='smtp.gmail.com', poort=587)
smtplib_server.schrikt()
smtplib_server.inloggen (SEND_FROM, EMAIL_PWD)
# Verkrijg elk gebruikersdetail en stuur de e-mail:
voor naam, e-mail in zip (user_name, user_email):
multipart_message = MIMEMultipart() # maak een bericht
# voeg de werkelijke persoonsnaam toe aan de berichtsjabloon
msg = message_template.plaatsvervanger(PERSON_NAME=naam.titel())
# Print de berichttekst voor ons uit
afdrukken (bericht)
# stel de parameters van het bericht in
multipart_message['From']=SEND_FROM
multipart_message['Aan']=e-mail
multipart_message['Subject']="LinuxHint-e-mail"
# toevoegen in de berichttekst
multipart_message.attach(MIMEText(msg, 'plain'))
# stuur het bericht via de eerder ingestelde server.
smtplib_server.send_message(multipart_message)
del multipart_message
# Beëindig de SMTP-sessie en sluit de verbinding
smtplib_server.stoppen()

In de bovenstaande functie hebben we elke stap gevolgd die we in de vorige sectie hebben vermeld:. We hebben de SMTP-verbinding gemaakt en deze gebruikt om de e-mail te verzenden.

Compleet programma

Laten we in het laatste gedeelte eens kijken naar het volledige programma dat kan worden gebruikt om de e-mail naar de aangewezen gebruiker te sturen:

smtplib importeren
van tekenreeksimportsjabloon
van email.mime.multipart import MIMEMultipart
van email.mime.tekst importeren MIMETekst
SEND_FROM = 'mijn-e-mail-hier'
EMAIL_PWD = 'mijn-wachtwoord-hier'
def get_users_data(bestandsnaam):
gebruikersnaam = []
gebruiker_e-mail = []
met open(file_name, mode='r', encoding='utf-8') als user_file:
voor user_info in user_file:
gebruikersnaam.toevoegen(user_info.split()[0])
gebruiker_e-mail.toevoegen(user_info.splitsen()[1])
retourneer gebruikersnaam, e-mailadres gebruiker
def read_template(bestandsnaam):
met open(file_name, 'r', encoding='utf-8') als msg_template:
msg_template_content = msg_template.lezen()
retoursjabloon (msg_template_content)
def hoofd():
user_name, user_email = get_users_data('users'.txt') # lees gebruikersdetails
message_template = read_template('bericht.tekst')
# stel de SMTP-server in
smtplib_server = smtplib.SMTP(host='smtp.gmail.com', poort=587)
smtplib_server.schrikt()
smtplib_server.inloggen (SEND_FROM, EMAIL_PWD)
# Verkrijg elk gebruikersdetail en stuur de e-mail:
voor naam, e-mail in zip (user_name, user_email):
multipart_message = MIMEMultipart() # maak een bericht
# voeg de werkelijke persoonsnaam toe aan de berichtsjabloon
msg = message_template.plaatsvervanger(PERSON_NAME=naam.titel())
# Print de berichttekst voor ons uit
afdrukken (bericht)
# stel de parameters van het bericht in
multipart_message['From']=SEND_FROM
multipart_message['Aan']=e-mail
multipart_message['Subject']="LinuxHint-e-mail"
# toevoegen in de berichttekst
multipart_message.attach(MIMEText(msg, 'plain'))
# stuur het bericht via de eerder ingestelde server.
smtplib_server.send_message(multipart_message)
del multipart_message
# Beëindig de SMTP-sessie en sluit de verbinding
smtplib_server.stoppen()
if __name__ == '__main__':
hoofd()

Wanneer we dit programma uitvoeren met een Gmail-ID, kunt u een probleem als dit tegenkomen:

Gmail SMTP-fout


Dit komt omdat Gmail geen gewone scripts toestaat om de Gmail API te gebruiken. Hiervoor moet u mogelijk de beveiligingsaanmelding in uw Gmail-account uitschakelen. Lees hier hoe je dit voor Gmail doet.

Conclusie

In deze les hebben we gekeken hoe we e-mails kunnen verzenden met Python's smtplib module.

Hoe de GameConqueror Cheat Engine in Linux te gebruiken
Het artikel bevat een handleiding over het gebruik van de GameConqueror cheat-engine in Linux. Veel gebruikers die games op Windows spelen, gebruiken ...
Beste gameconsole-emulators voor Linux
Dit artikel bevat een lijst van populaire emulatiesoftware voor gameconsoles die beschikbaar is voor Linux. Emulatie is een softwarecompatibiliteitsla...
Beste Linux-distributies voor gaming in 2021
Het Linux-besturingssysteem heeft een lange weg afgelegd van zijn oorspronkelijke, eenvoudige, servergebaseerde uiterlijk. Dit besturingssysteem is de...