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) .
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.
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
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 = '[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')