logo

Python Odosielanie e-mailov pomocou SMTP

Simple Mail Transfer Protocol (SMTP) sa používa ako protokol na spracovanie e-mailového prenosu pomocou Pythonu. Používa sa na smerovanie e-mailov medzi e-mailovými servermi. Je to protokol aplikačnej vrstvy, ktorý umožňuje používateľom posielať poštu inej osobe. Príjemca získava e-maily pomocou protokolov POP (Post Office Protocol) a IMAP (Internet Message Access Protocol) .

Python Odosielanie e-mailov pomocou SMTP

Keď server počúva pripojenie TCP od klienta, inicializuje pripojenie na porte 587.

Python poskytuje a smtplib modul, ktorý definuje objekt relácie klienta SMTP, ktorý sa používa na odosielanie e-mailov na internetový počítač. Na tento účel musíme importovať smtplib pomocou príkazu import.

previesť znak na reťazec
 $ import smtplib 

Na prenos e-mailov sa používa objekt SMTP. Nasledujúca syntax sa používa na vytvorenie objektu smtplib.

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

Akceptuje nasledujúce parametre.

    hostiteľ:Je to názov hostiteľa počítača, na ktorom je spustený váš server SMTP. Tu môžeme zadať IP adresu servera ako ( https://www.javatpoint.com ) alebo localhost. Je to voliteľný parameter.port:Je to číslo portu, na ktorom hostiteľský počítač počúva pripojenia SMTP. Štandardne je to 25.local_hostname:Ak je na vašom lokálnom počítači spustený server SMTP, môžeme spomenúť názov hostiteľa lokálneho počítača.

Metóda sendmail() objektu SMTP sa používa na odoslanie pošty na požadovaný počítač. Syntax je uvedená nižšie.

 smtpObj.sendmail(sender, receiver, message) 

Príklad

 #!/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') 

Odosielanie emailov z gmailu

Existujú prípady, keď sa e-maily odosielajú pomocou servera Gmail SMTP. V tomto prípade môžeme namiesto použitia localhost s portom 587 odovzdať Gmail ako server SMTP.

neriadený prechod cez strom

Použite nasledujúcu syntax.

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

Tu sa musíme prihlásiť do účtu Gmail pomocou používateľského mena a hesla služby Gmail. Na tento účel poskytuje smtplib metódu login(), ktorá akceptuje používateľské meno a heslo odosielateľa.

Ak používate Gmail, váš Gmail vás môže požiadať o prístup k menej bezpečným aplikáciám. Aby to fungovalo, musíte ho dočasne zapnúť.

základné pásmo vs širokopásmové pripojenie
Python Odosielanie e-mailov pomocou SMTP

Zvážte nasledujúci príklad.

Príklad

 #!/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') 

Odosielanie HTML e-mailom

Kód HTML v správe môžeme naformátovať zadaním verzie MIME, typu obsahu a znakovej sady na odoslanie kódu HTML.

Zvážte nasledujúci príklad.

Príklad

 #!/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;)