logo

Python Odesílání e-mailů pomocí SMTP

Simple Mail Transfer Protocol (SMTP) se používá jako protokol pro zpracování e-mailového přenosu pomocí Pythonu. Používá se pro směrování e-mailů mezi e-mailovými servery. Jedná se o protokol aplikační vrstvy, který umožňuje uživatelům odesílat poštu jinému uživateli. Příjemce načítá e-maily pomocí protokolů POP (Post Office Protocol) a IMAP (Internet Message Access Protocol) .

Python Odesílání e-mailů pomocí SMTP

Když server naslouchá připojení TCP od klienta, zahájí připojení na portu 587.

Python poskytuje a smtplib modul, který definuje objekt relace klienta SMTP používaný k odesílání e-mailů na internetový počítač. Za tímto účelem musíme importovat smtplib pomocí příkazu import.

 $ import smtplib 

Pro přenos e-mailu se používá objekt SMTP. K vytvoření objektu smtplib se používá následující syntaxe.

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

Přijímá následující parametry.

    hostitel:Je to název hostitele počítače, na kterém běží váš SMTP server. Zde můžeme zadat IP adresu serveru jako ( https://www.javatpoint.com ) nebo localhost. Je to volitelný parametr.přístav:Je to číslo portu, na kterém hostitelský počítač naslouchá připojením SMTP. Ve výchozím nastavení je 25.local_hostname:Pokud na vašem místním počítači běží SMTP server, můžeme uvést název hostitele místního počítače.

Metoda sendmail() objektu SMTP se používá k odeslání pošty na požadovaný počítač. Syntaxe je uvedena níže.

 smtpObj.sendmail(sender, receiver, message) 

Pří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') 

Odeslání emailu z gmailu

Existují případy, kdy jsou e-maily odesílány pomocí serveru Gmail SMTP. V tomto případě můžeme předat Gmail jako server SMTP namísto použití localhost s portem 587.

Použijte následující syntaxi.

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

Zde se musíme přihlásit k účtu Gmail pomocí uživatelského jména a hesla Gmailu. Pro tento účel poskytuje smtplib metodu login(), která přijímá uživatelské jméno a heslo odesílatele.

Pokud používáte Gmail, může se stát, že vás váš Gmail požádá o přístup k méně bezpečným aplikacím. Aby to fungovalo, musíte to dočasně zapnout.

Python Odesílání e-mailů pomocí SMTP

Zvažte následující příklad.

gimp jak zrušit výběr

Pří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') 

Odeslání HTML e-mailem

Kód HTML ve zprávě můžeme naformátovat zadáním verze MIME, typu obsahu a znakové sady pro odeslání kódu HTML.

Zvažte následující příklad.

Pří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;)