logo

Python E-mail verzenden via SMTP

Simple Mail Transfer Protocol (SMTP) wordt gebruikt als protocol om de e-mailoverdracht met Python af te handelen. Het wordt gebruikt om e-mails tussen e-mailservers te routeren. Het is een applicatielaagprotocol waarmee gebruikers e-mail naar elkaar kunnen sturen. De ontvanger haalt e-mail op met behulp van de protocollen POP (Postkantoorprotocol) En IMAP (Internet Message Access Protocol) .

Python E-mail verzenden via SMTP

Wanneer de server luistert naar de TCP-verbinding van een client, initieert hij een verbinding op poort 587.

Python biedt een smtplib module, die een SMTP-clientsessieobject definieert dat wordt gebruikt om e-mails naar een internetmachine te verzenden. Voor dit doel moeten we de smtplib module met behulp van de importinstructie.

 $ import smtplib 

Het SMTP-object wordt gebruikt voor de e-mailoverdracht. De volgende syntaxis wordt gebruikt om het smtplib-object te maken.

 import smtplib smtpObj = smtplib.SMTP(host, port, local_hostname) 

Het accepteert de volgende parameters.

    gastheer:Het is de hostnaam van de machine waarop uw SMTP-server draait. Hier kunnen we het IP-adres van de server specificeren, zoals ( https://www.javatpoint.com ) of localhost. Het is een optionele parameter.haven:Het is het poortnummer waarop de hostmachine naar de SMTP-verbindingen luistert. Standaard is dit 25.lokale_hostnaam:Als de SMTP-server op uw lokale machine draait, kunnen we de hostnaam van de lokale machine vermelden.

De methode sendmail() van het SMTP-object wordt gebruikt om de e-mail naar de gewenste machine te verzenden. De syntaxis wordt hieronder gegeven.

 smtpObj.sendmail(sender, receiver, message) 

Voorbeeld

 #!/usr/bin/python3 import smtplib sender_mail = '[email protected]' receivers_mail = ['[email protected]'] message = '''From: From Person %s To: To Person %s Subject: Sending SMTP e-mail This is a test e-mail message. '''%(sender_mail,receivers_mail) try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender_mail, receivers_mail, message) print('Successfully sent email') except Exception: print('Error: unable to send email') 

E-mail verzenden vanuit Gmail

Er zijn gevallen waarin de e-mails worden verzonden via de Gmail SMTP-server. In dit geval kunnen we Gmail doorgeven als SMTP-server in plaats van de localhost met poort 587 te gebruiken.

Gebruik de volgende syntaxis.

 $ smtpObj = smtplib.SMTP('gmail.com', 587) 

Hier moeten we inloggen op het Gmail-account met de gebruikersnaam en het wachtwoord van Gmail. Voor dit doel biedt de smtplib de login() methode, die de gebruikersnaam en het wachtwoord van de afzender accepteert.

Hierdoor kan uw Gmail u vragen om toegang tot minder veilige apps als u Gmail gebruikt. Om dit te laten werken, moet u dit tijdelijk AANzetten.

tekenreeks n java
Python E-mail verzenden via SMTP

Beschouw het volgende voorbeeld.

Voorbeeld

 #!/usr/bin/python3 import smtplib sender_mail = '[email protected]' receivers_mail = ['[email protected]'] message = '''From: From Person %s To: To Person %s Subject: Sending SMTP e-mail This is a test e-mail message. '''%(sender_mail,receivers_mail) try: password = input('Enter the password'); smtpObj = smtplib.SMTP('gmail.com',587) smtpobj.login(sender_mail,password) smtpObj.sendmail(sender_mail, receivers_mail, message) print('Successfully sent email') except Exception: print('Error: unable to send email') 

HTML per e-mail verzenden

We kunnen de HTML in het bericht opmaken door de MIME-versie, het inhoudstype en de tekenset op te geven om de HTML te verzenden.

Beschouw het volgende voorbeeld.

Voorbeeld

 #!/usr/bin/python3 import smtplib sender_mail = &apos;[email protected]&apos; receivers_mail = [&apos;[email protected]&apos;] message = &apos;&apos;&apos;From: From Person %s To: To Person %s MIME-Version:1.0 Content-type:text/html Subject: Sending SMTP e-mail <h3>Python SMTP</h3> <strong>This is a test e-mail message.</strong> &apos;&apos;&apos;%(sender_mail,receivers_mail) try: smtpObj = smtplib.SMTP(&apos;localhost&apos;) smtpObj.sendmail(sender_mail, receivers_mail, message) print(&apos;Successfully sent email&apos;) except Exception: print(&apos;Error: unable to send email&apos;)