logo

Python Skicka e-post med SMTP

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) .

Python Skicka e-post med SMTP

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.

    värd:Det är värdnamnet på maskinen som kör din SMTP-server. Här kan vi ange IP-adressen för servern som ( https://www.javatpoint.com ) eller localhost. Det är en valfri parameter.hamn:Det är portnumret på vilket värddatorn lyssnar på SMTP-anslutningarna. Det är 25 som standard.local_hostname:Om SMTP-servern körs på din lokala dator kan vi nämna värdnamnet för den lokala maskinen.

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.

Python Skicka e-post med SMTP

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 = &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;)