Simple Mail Transfer Protocol (SMTP) används som ett protokoll för att hantera e-postöverföringen med Python. Den används för att dirigera e-postmeddelanden mellan e-postservrar. Det är ett applikationslagerprotokoll som tillåter användare att skicka e-post till en annan. Mottagaren hämtar e-post med hjälp av protokollen POP (Post Office Protocol) och IMAP (Internet Message Access Protocol) .
När servern lyssnar efter TCP-anslutningen från en klient initierar den en anslutning på port 587.
Python tillhandahåller en smtplib modul, som definierar ett SMTP-klientsessionsobjekt som används för att skicka e-postmeddelanden till en internetmaskin. För detta ändamål måste vi importera smtplib modul med hjälp av importsatsen.
$ import smtplib
SMTP-objektet används för e-postöverföringen. Följande syntax används för att skapa smtplib-objektet.
import smtplib smtpObj = smtplib.SMTP(host, port, local_hostname)
Den accepterar följande parametrar.
Metoden sendmail() för SMTP-objektet används för att skicka posten till önskad maskin. Syntaxen ges nedan.
smtpObj.sendmail(sender, receiver, message)
Exempel
#!/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')
Skickar e-post från gmail
Det finns fall där e-postmeddelanden skickas med Gmails SMTP-server. I det här fallet kan vi skicka Gmail som SMTP-server istället för att använda den lokala värden med port 587.
Använd följande syntax.
$ smtpObj = smtplib.SMTP('gmail.com', 587)
Här måste vi logga in på Gmail-kontot med Gmail-användarnamn och lösenord. För detta ändamål tillhandahåller smtplib metoden login(), som accepterar avsändarens användarnamn och lösenord.
Detta kan göra att din Gmail ber dig om åtkomst till mindre säkra appar om du använder Gmail. Du måste aktivera detta tillfälligt för att det ska fungera.
Betrakta följande exempel.
Exempel
#!/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')
Skickar HTML i e-post
Vi kan formatera HTML-koden i meddelandet genom att ange MIME-version, innehållstyp och teckenuppsättning för att skicka HTML-koden.
Betrakta följande exempel.
tiger jämfört med lejon
Exempel
#!/usr/bin/python3 import smtplib sender_mail = '[email protected]' receivers_mail = ['[email protected]'] message = '''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> '''%(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')